存档

文章标签 ‘文件’

linux下如何知道文件或者目录占用的硬盘空间

2010年2月28日 没有评论

shell查看系统内最大文件的方法,一共三个步:
第一步:
df -h
df查看文件系统占用情况 -h 带单位(下同)
第二步:
du -s ./* | sort -rn
du计算目录大小,-s 参数会告诉 du 只打印出每个文件或目录的总大小,而不要递归的把目录下所有文件的大小打印出来。然后再传给 sort,-n 为按照数字排序,-r 为逆序显示,这样最大的文件或者目录就列在前面了~
第三步:
ls -sSh
ls -sSh 可以将当前目录下的文件按照大小排序显示出来,最大的放在前面,当前目录下的最大文件立马现形。
参数中的 S 即是按照大小排序,s 为顺带打印出文件大小,h 把大小显示为 xx K xx M 这样的易读格式,如果你只需要排序结果,那么 ls -S 就可以了。

分类: Linux 标签: , ,

使用Windows的SHFileOperation外壳函数实现文件操作

2009年10月9日 2 条评论

[转自http://www.cnblogs.com/liunatural/archive/2009/07/08/1519019.html]

在Windows的shellapi文件中定义了一个名为SHFileOperation()的外壳函数,用它可以实现各种文件操作,如文件的拷贝、删除、移动等,该函数使用起来非常简单,它只有一个指向SHFILEOPSTRUCT结构的参数。使用SHFileOperation()函数时只要填写该专用结构--SHFILEOPSTRUCT,告诉Windows执行什么样的操作,以及其它重要信息就行了。SHFileOperation()的特别之处在于它是一个高级外壳函数,不同于低级文件处理。当调用SHFileOperation操作文件时,相应的外壳拷贝处理器(如果有的话)被调用。如在删除某个文件时,SHFileOperation会将删除的文件放到Recycle Bin中。SHFileOperation()函数的原形为:

WINSHELLAPI int WINAPI SHFileOperation (LPSHFILEOPSTRUCT lpFIleOp);

  函数中参数类型为一个LPSHFILEOPSTRUCT结构,它包含有进行文件操作的各种信息,其具体的结构如下:

Typedef struct _ShFILEOPSTRUCT
{
HWND hWnd; //消息发送的窗口句柄;
UINT wFunc; //操作类型
LPCSTR pFrom; //源文件及路径
LPCSTR pTo; //目标文件及路径
FILEOP_FLAGS fFlags; //操作与确认标志
BOOL fAnyOperationsAborted; //操作选择位
LPVOID hNameMappings; //文件映射
LPCSTR lpszProgressTitle; //文件操作进度窗口标题
}SHFILEOPSTRUCT, FAR * LPSHFILEOPSTRUCT;

  在这个结构中,hWnd是指向发送消息的窗口句柄,pFrom与pTo是进行文件操作的源文件名和目标文件名,它包含文件的路径,对应单个文件的路径字符串,或对于多个文件,必须以NULL作为字符串的结尾或文件路径名之间的间隔,否则在程序运行的时候会发生错误。另外,pFrom和pTo都支持通配符*和?,这大大方便了开发人员的使用。例如,源文件或目录有两个,则应是:char pFrom[]="d:\\Test1\0d:\\Text.txt\0",它表示对要D:盘Test目录下的所有文件和D:盘上的Text.txt文件进行操作。字符串中的"\\"是C语言中的'\'的转义符,'\0'则是NULL。wFunc 是结构中的一个非常重要的成员,它代表着函数将要进行的操作类型,它的取值为如下:

  FO_COPY: 拷贝文件pFrom到pTo 的指定位置。

  FO_RENAME: 将pFrom的文件名更名为pTo的文件名。

  FO_MOVE: 将pFrom的文件移动到pTo的地方。

  FO_DELETE: 删除pFrom指定的文件。

  使用该函数进行文件拷贝、移动或删除时,如果需要的时间很长,则程序会自动在进行的过程中出现一个无模式的对话框(Windows操作系统提供的文件操作对话框),用来显示执行的进度和执行的时间,以及正在拷贝、移动或删除的文件名,此时结构中的成员lpszProgressTitle显示此对话框的标题。fFlags是在进行文件操作时的过程和状态控制标识。它主要有如下一些标识,也可以是其组合:

  FOF_FILESONLY:执行通配符,只执行文件;

  FOF_ALLOWUNDO:保存UNDO信息,以便在回收站中恢复文件;

  FOF_NOCONFIRMATION:在出现目标文件已存在的时候,如果不设置此项,则它会出现确认是否覆盖的对话框,设置此项则自动确认,进行覆盖,不出现对话框。

  FOF_NOERRORUI:设置此项后,当文件处理过程中出现错误时,不出现错误提示,否则会进行错误提示。

  FOF_RENAMEONCOLLISION:当已存在文件名时,对其进行更换文提示。

  FOF_SILENT:不显示进度对话框。

  FOF_WANTMAPPINGHANDLE:要求SHFileOperation()函数返回正处于操作状态的实际文件列表,文件列表名柄保存在hNameMappings成员中。

  SHFILEOPSTRUCT结构还包含一个SHNAMEMAPPING结构的数组,此数组保存由SHELL计算的每个处于操作状态的文件的新旧路径。

  在使用该函数删除文件时必须设置SHFILEOPSTRUCT结构中的神秘FOF_ALLOWUNDO标志,这样才能将待删除的文件拷到Recycle Bin,从而使用户可以撤销删除操作。需要注意的是,如果pFrom设置为某个文件名,用FO_DELETE标志删除这个文件并不会将它移到Recycle Bin,甚至设置FOF_ALLOWUNDO标志也不行,在这里你必须使用全路径名,这样SHFileOperation才会将删除的文件移到Recycle Bin。

分类: 编程 标签: , , ,

[问答]Tomcat5的中文文件名的文件返回404错误

2009年9月11日 3 条评论

问题
在Tomcat5的webapps下建一个目录(files)和两个文件(2.txt和记录1.txt),如下:
webapps\ROOT
└─files
1.txt
记录1.txt

调用下面两个连接

http://localhost:8080/files/1.txt

http://localhost:8080/files/%E8%AE%B0%E5%BD%951.txt

第一个正常下载。第二个就没办法下载。返回404。

解决方法:
修改改tomcat的server.xml文件(这里是解决含有中文的文件、图片的不能下载、显示的问题):

URIEncoding="UTF-8" 加上这句就可以识别中文文件了
这时应为Tomcat缺省是ISO-8859-1编码。使用URIEncoding是对URI二机制字节编码(%xx的形式)的设定,实现中文名识别。

分类: Java 标签: , ,