Delphi文件操作所涉及的一些函数 附例子 (:作者:webfly 日期:2008-09-10)

//判断文件是否存在 FileExists
//判断文件夹是否存在 DirectoryExists
//删除文件 DeleteFile; Windows.DeleteFile
//删除文件夹 RemoveDir; RemoveDirectory
//获取当前文件夹 GetCurrentDir
//设置当前文件夹 SetCurrentDir; ChDir; SetCurrentDirectory
//获取指定驱动器的当前路径名 GetDir
//文件改名 RenameFile
//建立文件夹 CreateDir; CreateDirectory; ForceDirectories
//删除空文件夹 RemoveDir; RemoveDirectory
//建立新文件 FileCreate
//获取当前文件的版本号 GetFileVersion
//获取磁盘空间 DiskSize; DiskFree
//搜索文件 FindFirst; FindNext; FindClose
//读取与设置文件属性 FileGetAttr; FileSetAttr
//获取文件的创建时间 FileAge; FileDateToDateTime

Delphi代码
  1. //判断文件是否存在 FileExists   
  2. var  
  3.   f: string;   
  4. begin  
  5.   f := 'c:\temp\test.txt';   
  6.   if not FileExists(f) then  
  7.   begin  
  8.    //如果文件不存在   
  9.   end;   
  10. end;   
  11.   
  12. --------------------------------------------------------------------------------   
  13.   
  14.   
  15. //判断文件夹是否存在 DirectoryExists   
  16. var  
  17.   dir: string;   
  18. begin  
  19.   dir := 'c:\temp';   
  20.   if not DirectoryExists(dir) then  
  21.   begin  
  22.    //如果文件夹不存在   
  23.   end;   
  24. end;   
  25.   
  26. --------------------------------------------------------------------------------   
  27.   
  28.   
  29. //删除文件 DeleteFile; Windows.DeleteFile   
  30. var  
  31.   f: string;   
  32. begin  
  33.   f := 'c:\temp\test.txt';   
  34. //DeleteFile(f);  //返回 Boolean   
  35.   
  36. //或者用系统API:   
  37.   Windows.DeleteFile(PChar(f)); //返回 Boolean   
  38. end;   
  39.   
  40. --------------------------------------------------------------------------------   
  41.   
  42.   
  43. //删除文件夹 RemoveDir; RemoveDirectory   
  44. var  
  45.   dir: string;   
  46. begin  
  47.   dir := 'c:\temp';   
  48.   RemoveDir(dir); //返回 Boolean   
  49.   
  50. //或者用系统 API:   
  51.   RemoveDirectory(PChar(dir)); //返回 Boolean   
  52. end;   
  53.   
  54. --------------------------------------------------------------------------------   
  55.   
  56.   
  57. //获取当前文件夹 GetCurrentDir   
  58. var  
  59.   dir: string;   
  60. begin  
  61.   dir := GetCurrentDir;   
  62.   ShowMessage(dir); //C:\Projects   
  63. end;   
  64.   
  65. --------------------------------------------------------------------------------   
  66.   
  67.   
  68. //设置当前文件夹 SetCurrentDir; ChDir; SetCurrentDirectory   
  69. var  
  70.   dir: string;   
  71. begin  
  72.   dir := 'c:\temp';   
  73.   if SetCurrentDir(dir) then  
  74.     ShowMessage(GetCurrentDir); //c:\temp   
  75.   
  76. //或者   
  77.   ChDir(dir); //无返回值   
  78.   
  79. //也可以使用API:   
  80.   SetCurrentDirectory(PChar(Dir)); //返回 Boolean   
  81. end;   
  82.   
  83. --------------------------------------------------------------------------------   
  84.   
  85.   
  86. //获取指定驱动器的当前路径名 GetDir   
  87. var  
  88.   dir: string;   
  89.   b: Byte;   
  90. begin  
  91.   b := 0;   
  92.   GetDir(b,dir);   
  93.   ShowMessage(dir); //   
  94.   
  95. //第一个参数: 1、2、3、4...分别对应: A、B、C、D...   
  96. //0 是缺省驱动器   
  97. end;   
  98.   
  99. --------------------------------------------------------------------------------   
  100.   
  101.   
  102. //文件改名 RenameFile   
  103. var  
  104.   OldName,NewName: string;   
  105. begin  
  106.   OldName := 'c:\temp\Old.txt';   
  107.   NewName := 'c:\temp\New.txt';   
  108.   
  109.   if RenameFile(OldName,NewName) then  
  110.     ShowMessage('改名成功!');   
  111.   
  112. //也可以:   
  113.   SetCurrentDir('c:\temp');   
  114.   OldName := 'Old.txt';   
  115.   NewName := 'New.txt';   
  116.   
  117.   if RenameFile(OldName,NewName) then  
  118.     ShowMessage('改名成功!');   
  119. end;   
  120.   
  121. --------------------------------------------------------------------------------   
  122.   
  123.   
  124. //建立文件夹 CreateDir; CreateDirectory; ForceDirectories   
  125. var  
  126.   dir: string;   
  127. begin  
  128.   dir := 'c:\temp\delphi';   
  129.   if not DirectoryExists(dir) then  
  130.     CreateDir(dir); //返回 Boolean   
  131.   
  132. //也可以直接用API:   
  133.   CreateDirectory(PChar(dir),nil); //返回 Boolean   
  134.   
  135. //如果缺少上层目录将自动补齐:   
  136.   dir := 'c:\temp\CodeGear\Delphi\2007\万一';   
  137.   ForceDirectories(dir); //返回 Boolean   
  138. end;   
  139.   
  140. --------------------------------------------------------------------------------   
  141.   
  142.   
  143. //删除空文件夹 RemoveDir; RemoveDirectory   
  144. var  
  145.   dir: string;   
  146. begin  
  147.   dir := 'c:\temp\delphi';   
  148.   RemoveDir(dir); //返回 Boolean   
  149.   
  150. //也可以直接用API:   
  151.   RemoveDirectory(PChar(dir)); //返回 Boolean   
  152. end;   
  153.   
  154. --------------------------------------------------------------------------------   
  155.   
  156.   
  157. //建立新文件 FileCreate   
  158. var  
  159.   FileName: string;   
  160.   i: Integer;   
  161. begin  
  162.   FileName := 'c:\temp\test.dat';   
  163.   i := FileCreate(FileName);   
  164.   
  165.   if i>0 then  
  166.     ShowMessage('新文件的句柄是: ' + IntToStr(i))   
  167.   else  
  168.     ShowMessage('创建失败!');   
  169. end;   
  170.   
  171. --------------------------------------------------------------------------------   
  172.   
  173.   
  174. //获取当前文件的版本号 GetFileVersion   
  175. var  
  176.   s: string;   
  177.   i: Integer;   
  178. begin  
  179.   s := 'C:\WINDOWS\notepad.exe';   
  180.   i := GetFileVersion(s); //如果没有版本号返回 -1   
  181.   ShowMessage(IntToStr(i)); //327681 这是当前记事本的版本号(还应该再转换一下)   
  182. end;   
  183.   
  184. --------------------------------------------------------------------------------   
  185.   
  186.   
  187. //获取磁盘空间 DiskSize; DiskFree   
  188. var  
  189.   r: Real;   
  190.   s: string;   
  191. begin  
  192.   r := DiskSize(3); //获取C:总空间, 单位是字节   
  193.   r := r/1024/1024/1024;   
  194.   Str(r:0:2,s); //格式为保留两位小数的字符串   
  195.   s := 'C盘总空间是: ' + s + ' GB';   
  196.   ShowMessage(s); //xx.xx GB   
  197.   
  198.   r := DiskFree(3); //获取C:可用空间   
  199.   r := r/1024/1024/1024;   
  200.   Str(r:0:2,s);   
  201.   s := 'C盘可用空间是: ' + s + ' GB';   
  202.   ShowMessage(s); //xx.xx GB   
  203. end;   
  204.   
  205. //查找一个文件 FileSearch   
  206. var  
  207.   FileName,Dir,s: string;   
  208. begin  
  209.   FileName := 'notepad.exe';   
  210.   Dir := 'c:\windows';   
  211.   s := FileSearch(FileName,Dir);   
  212.   
  213.   if s<>'' then  
  214.     ShowMessage(s) //c:\windows\notepad.exe   
  215.   else  
  216.     ShowMessage('没找到');   
  217. end;   
  218.   
  219. --------------------------------------------------------------------------------   
  220.   
  221.   
  222. //搜索文件 FindFirst; FindNext; FindClose   
  223. var  
  224.   sr: TSearchRec;    //定义 TSearchRec 结构变量   
  225.   Attr: Integer;     //文件属性   
  226.   s: string;         //要搜索的内容   
  227.   List: TStringList; //存放搜索结果   
  228. begin  
  229.   s := 'c:\windows\*.txt';   
  230.   Attr := faAnyFile;             //文件属性值faAnyFile表示是所有文件   
  231.   List := TStringList.Create;    //List建立   
  232.   
  233.   if FindFirst(s,Attr,sr)=0 then //开始搜索,并给 sr 赋予信息, 返回0表示找到第一个   
  234.   begin  
  235.     repeat                       //如果有第一个就继续找   
  236.       List.Add(sr.Name);         //用List记下结果   
  237.     until(FindNext(sr)<>0);      //因为sr已经有了搜索信息, FindNext只要这一个参数, 返回0表示找到   
  238.   end;   
  239.   FindClose(sr);                 //需要结束搜索, 搜索是内含句柄的   
  240.   
  241.   ShowMessage(List.Text);        //显示搜索结果   
  242.   List.Free;                     //释放List   
  243.   
  244. //更多注释:   
  245. //TSearchRec 结构是内涵文件大小、名称、属性与时间等信息   
  246. //TSearchRec 中的属性是一个整数值, 可能的值有:   
  247. //faReadOnly  1   只读文件   
  248. //faHidden    2   隐藏文件   
  249. //faSysFile   4   系统文件   
  250. //faVolumeID  8   卷标文件   
  251. //faDirectory 16  目录文件   
  252. //faArchive   32  归档文件   
  253. //faSymLink   64  链接文件   
  254. //faAnyFile   63  任意文件   
  255.   
  256. //s 的值也可以使用?通配符,好像只支持7个?, 如果没有条件就是*, 譬如: C:\*   
  257. //实际使用中还应该在 repeat 中提些条件, 譬如判断如果是文件夹就递归搜索等等   
  258. end;   
  259.   
  260. --------------------------------------------------------------------------------   
  261.   
  262.   
  263. //读取与设置文件属性 FileGetAttr; FileSetAttr   
  264. var  
  265.   FileName: string;   
  266.   Attr: Integer; //属性值是一个整数   
  267. begin  
  268.   FileName := 'c:\temp\Test.txt';   
  269.   Attr := FileGetAttr(FileName);   
  270.   ShowMessage(IntToStr(Attr)); //32, 存档文件   
  271.   
  272. //设置为隐藏和只读文件:   
  273.   Attr := FILE_ATTRIBUTE_READONLY or FILE_ATTRIBUTE_HIDDEN;   
  274.   if FileSetAttr(FileName,Attr)=0 then //返回0表示成功   
  275.     ShowMessage('设置成功!');   
  276.   
  277. //属性可选值(有些用不着):   
  278. //FILE_ATTRIBUTE_READONLY = 1; 只读   
  279. //FILE_ATTRIBUTE_HIDDEN = 2; 隐藏   
  280. //FILE_ATTRIBUTE_SYSTEM = 4; 系统   
  281. //FILE_ATTRIBUTE_DIRECTORY = 16   
  282. //FILE_ATTRIBUTE_ARCHIVE = 32; 存档   
  283. //FILE_ATTRIBUTE_DEVICE = 64   
  284. //FILE_ATTRIBUTE_NORMAL = 128; 一般   
  285. //FILE_ATTRIBUTE_TEMPORARY = 256   
  286. //FILE_ATTRIBUTE_SPARSE_FILE = 512   
  287. //FILE_ATTRIBUTE_REPARSE_POINT = 1204   
  288. //FILE_ATTRIBUTE_COMPRESSED = 2048; 压缩   
  289. //FILE_ATTRIBUTE_OFFLINE = 4096   
  290. //FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192; 不被索引   
  291. //FILE_ATTRIBUTE_ENCRYPTED = 16384   
  292. end;   
  293.   
  294. --------------------------------------------------------------------------------   
  295.   
  296.   
  297. //获取文件的创建时间 FileAge; FileDateToDateTime   
  298. var  
  299.   FileName: string;   
  300.   ti: Integer;   
  301.   dt: TDateTime;   
  302. begin  
  303.   FileName := 'c:\temp\Test.txt';   
  304.   ti := FileAge(FileName);   
  305.   ShowMessage(IntToStr(ti)); //返回: 931951472, 需要转换   
  306.   
  307.   dt := FileDateToDateTime(ti); //转换   
  308.   ShowMessage(DateTimeToStr(dt)); //2007-12-12 14:27:32   
  309. end;  

你可能感兴趣的:(Delphi)