Delphi文件操作所涉及的一些函数

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