delphi 文件的操作

摘要:
');// 或:SetCurrentDir;OldName:='旧。txt’;NewName:='新建。txt’;如果重命名文件,则显示消息('重命名成功!

转载至:http://hi.baidu.com/endlesslove137/blog/item/86f1669990a7ed046f068ced.html

//判断文件是否存在 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


//判断文件是否存在 FileExists 
var 
f: string; 
begin 
f := 'c:\temp\test.txt'; 
if not FileExists(f) then 
begin 
//如果文件不存在 
end; 
end; 

-------------------------------------------------------------------------------- 


//判断文件夹是否存在 DirectoryExists 
var 
dir: string; 
begin 
dir := 'c:\temp'; 
if not DirectoryExists(dir) then 
begin 
//如果文件夹不存在 
end; 
end; 

-------------------------------------------------------------------------------- 


//删除文件 DeleteFile; Windows.DeleteFile 
var 
f: string; 
begin 
f := 'c:\temp\test.txt'; 
//DeleteFile(f); //返回 Boolean 

//或者用系统API: 
Windows.DeleteFile(PChar(f)); //返回 Boolean 
end; 

-------------------------------------------------------------------------------- 


//删除文件夹 RemoveDir; RemoveDirectory 
var 
dir: string; 
begin 
dir := 'c:\temp'; 
RemoveDir(dir); //返回 Boolean 

//或者用系统 API: 
RemoveDirectory(PChar(dir)); //返回 Boolean 
end; 

-------------------------------------------------------------------------------- 


//获取当前文件夹 GetCurrentDir 
var 
dir: string; 
begin 
dir := GetCurrentDir; 
ShowMessage(dir); //C:\Projects 
end; 

-------------------------------------------------------------------------------- 


//设置当前文件夹 SetCurrentDir; ChDir; SetCurrentDirectory 
var 
dir: string; 
begin 
dir := 'c:\temp'; 
if SetCurrentDir(dir) then 
ShowMessage(GetCurrentDir); //c:\temp 

//或者 
ChDir(dir); //无返回值 

//也可以使用API: 
SetCurrentDirectory(PChar(Dir)); //返回 Boolean 
end; 

-------------------------------------------------------------------------------- 


//获取指定驱动器的当前路径名 GetDir 
var 
dir: string; 
b: Byte; 
begin 
b := 0; 
GetDir(b,dir); 
ShowMessage(dir); // 

//第一个参数: 1、2、3、4...分别对应: A、B、C、D... 
//0 是缺省驱动器 
end; 

-------------------------------------------------------------------------------- 


//文件改名 RenameFile 
var 
OldName,NewName: string; 
begin 
OldName := 'c:\temp\Old.txt'; 
NewName := 'c:\temp\New.txt'; 

if RenameFile(OldName,NewName) then 
ShowMessage('改名成功!'); 

//也可以: 
SetCurrentDir('c:\temp'); 
OldName := 'Old.txt'; 
NewName := 'New.txt'; 

if RenameFile(OldName,NewName) then 
ShowMessage('改名成功!'); 
end; 

-------------------------------------------------------------------------------- 


//建立文件夹 CreateDir; CreateDirectory; ForceDirectories 
var 
dir: string; 
begin 
dir := 'c:\temp\delphi'; 
if not DirectoryExists(dir) then 
CreateDir(dir); //返回 Boolean 

//也可以直接用API: 
CreateDirectory(PChar(dir),nil); //返回 Boolean 

//如果缺少上层目录将自动补齐: 
dir := 'c:\temp\CodeGear\Delphi\2007\万一'; 
ForceDirectories(dir); //返回 Boolean 
end; 

-------------------------------------------------------------------------------- 


//删除空文件夹 RemoveDir; RemoveDirectory 
var 
dir: string; 
begin 
dir := 'c:\temp\delphi'; 
RemoveDir(dir); //返回 Boolean 

//也可以直接用API: 
RemoveDirectory(PChar(dir)); //返回 Boolean 
end; 

-------------------------------------------------------------------------------- 


//建立新文件 FileCreate 
var 
FileName: string; 
i: Integer; 
begin 
FileName := 'c:\temp\test.dat'; 
i := FileCreate(FileName); 

if i>0 then 
ShowMessage('新文件的句柄是: ' + IntToStr(i)) 
else 
ShowMessage('创建失败!'); 
end; 

-------------------------------------------------------------------------------- 


//获取当前文件的版本号 GetFileVersion 
var 
s: string; 
i: Integer; 
begin 
s := 'C:\WINDOWS\notepad.exe'; 
i := GetFileVersion(s); //如果没有版本号返回 -1 
ShowMessage(IntToStr(i)); //327681 这是当前记事本的版本号(还应该再转换一下) 
end; 

-------------------------------------------------------------------------------- 


//获取磁盘空间 DiskSize; DiskFree 
var 
r: Real; 
s: string; 
begin 
r := DiskSize(3); //获取C:总空间, 单位是字节 
r := r/1024/1024/1024; 
Str(r:0:2,s); //格式为保留两位小数的字符串 
s := 'C盘总空间是: ' + s + ' GB'; 
ShowMessage(s); //xx.xx GB 

r := DiskFree(3); //获取C:可用空间 
r := r/1024/1024/1024; 
Str(r:0:2,s); 
s := 'C盘可用空间是: ' + s + ' GB'; 
ShowMessage(s); //xx.xx GB 
end; 

//查找一个文件 FileSearch 
var 
FileName,Dir,s: string; 
begin 
FileName := 'notepad.exe'; 
Dir := 'c:\windows'; 
s := FileSearch(FileName,Dir); 

if s<>'' then 
ShowMessage(s) //c:\windows\notepad.exe 
else 
ShowMessage('没找到'); 
end; 

-------------------------------------------------------------------------------- 


//搜索文件 FindFirst; FindNext; FindClose 
var 
sr: TSearchRec; //定义 TSearchRec 结构变量 
Attr: Integer; //文件属性 
s: string; //要搜索的内容 
List: TStringList; //存放搜索结果 
begin 
s := 'c:\windows\*.txt'; 
Attr := faAnyFile; //文件属性值faAnyFile表示是所有文件 
List := TStringList.Create; //List建立 

if FindFirst(s,Attr,sr)=0 then //开始搜索,并给 sr 赋予信息, 返回0表示找到第一个 
begin 
repeat //如果有第一个就继续找 
List.Add(sr.Name); //用List记下结果 
until(FindNext(sr)<>0); //因为sr已经有了搜索信息, FindNext只要这一个参数, 返回0表示找到 
end; 
FindClose(sr); //需要结束搜索, 搜索是内含句柄的 

ShowMessage(List.Text); //显示搜索结果 
List.Free; //释放List 

//更多注释: 
//TSearchRec 结构是内涵文件大小、名称、属性与时间等信息 
//TSearchRec 中的属性是一个整数值, 可能的值有: 
//faReadOnly 1 只读文件 
//faHidden 2 隐藏文件 
//faSysFile 4 系统文件 
//faVolumeID 8 卷标文件 
//faDirectory 16 目录文件 
//faArchive 32 归档文件 
//faSymLink 64 链接文件 
//faAnyFile 63 任意文件 

//s 的值也可以使用?通配符,好像只支持7个?, 如果没有条件就是*, 譬如: C:\* 
//实际使用中还应该在 repeat 中提些条件, 譬如判断如果是文件夹就递归搜索等等 
end; 

-------------------------------------------------------------------------------- 


//读取与设置文件属性 FileGetAttr; FileSetAttr 
var 
FileName: string; 
Attr: Integer; //属性值是一个整数 
begin 
FileName := 'c:\temp\Test.txt'; 
Attr := FileGetAttr(FileName); 
ShowMessage(IntToStr(Attr)); //32, 存档文件 

//设置为隐藏和只读文件: 
Attr := FILE_ATTRIBUTE_READONLY or FILE_ATTRIBUTE_HIDDEN; 
if FileSetAttr(FileName,Attr)=0 then //返回0表示成功 
ShowMessage('设置成功!'); 

//属性可选值(有些用不着): 
//FILE_ATTRIBUTE_READONLY = 1; 只读 
//FILE_ATTRIBUTE_HIDDEN = 2; 隐藏 
//FILE_ATTRIBUTE_SYSTEM = 4; 系统 
//FILE_ATTRIBUTE_DIRECTORY = 16 
//FILE_ATTRIBUTE_ARCHIVE = 32; 存档 
//FILE_ATTRIBUTE_DEVICE = 64 
//FILE_ATTRIBUTE_NORMAL = 128; 一般 
//FILE_ATTRIBUTE_TEMPORARY = 256 
//FILE_ATTRIBUTE_SPARSE_FILE = 512 
//FILE_ATTRIBUTE_REPARSE_POINT = 1204 
//FILE_ATTRIBUTE_COMPRESSED = 2048; 压缩 
//FILE_ATTRIBUTE_OFFLINE = 4096 
//FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192; 不被索引 
//FILE_ATTRIBUTE_ENCRYPTED = 16384 
end; 

-------------------------------------------------------------------------------- 


//获取文件的创建时间 FileAge; FileDateToDateTime 
var 
FileName: string; 
ti: Integer; 
dt: TDateTime; 
begin 
FileName := 'c:\temp\Test.txt'; 
ti := FileAge(FileName); 
ShowMessage(IntToStr(ti)); //返回: 931951472, 需要转换 

dt := FileDateToDateTime(ti); //转换 
ShowMessage(DateTimeToStr(dt)); //2007-12-12 14:27:32 
end;

{设置与获取当前路径}
SetCurrentDir('C:\Temp\');
ShowMessage(GetCurrentDir); { C:\Temp }

{获取当前目录下子目录的全路径}
p := GetLocaleDirectory('ABC');
ShowMessage(p); { C:\Temp\ABC\ }

{获取当前目录下文件的全路径}
f := GetLocaleFile('X.txt');
ShowMessage(f); { C:\Temp\X.txt }
f := GetLocaleFile('ABC\X.txt');
ShowMessage(f); { C:\Temp\ABC\X.txt }

{IOUtils 下的 TPath 也有类似功能}
f := TPath.GetFullPath('X.txt');
ShowMessage(f); { C:\Temp\X.txt }
f := TPath.GetFullPath('ABC\X.txt');
ShowMessage(f); { C:\Temp\ABC\X.txt }

{判断当前文件夹下的文件或子文件夹是否存在}
b := LocaleDirectoryExists('ABC'); //这相当于: DirectoryExists(GetCurrentDir + '\ABC');
b := LocaleFileExists('X.txt'); //这相当于: FileExists(GetCurrentDir + '\X.txt');
end;

免责声明:文章转载自《delphi 文件的操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇plink, vcftool计算等位基因频率(allele frequency,vcf)RecyclerView的万能适配器+定义可以到底部自动刷新的RecyclerView下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

hw1 problem2

problem 2没什么好说的,用了String里的substring() 和concat()method。看地里有人说可以新建一个StringBuilder constructor,然后用里面的deleteCharAt()method  试了一下是可以的,还要再用一个toString() method  把类型转换回String. 在String上做什么...

dateutil

Date、long、Calendar之间的相互转换 //当前时间 Date date = DateUtil.date(); //当前时间 Date date2 = DateUtil.date(Calendar.getInstance()); //当前时间 Date date3 = DateUtil.date(System.currentTimeMillis...

mini.DataGrid使用说明

mini.DataGrid表格。实现分页加载、自定义列、单元格渲染、行编辑器、锁定列、过滤行、汇总行等功能。Extendmini.PanelUsage <div url="../data/AjaxService.aspx?method=SearchEmployees" > <div property=...

Android中Message机制的灵活应用

转自:http://qaohao.iteye.com/blog/509145 1.活用Android线程间通信的Message机制 1.1.Message 代码在frameworks\base\core\java\android\Os\Message.java中。 Message.obtain函数:有多个obtain函数,主要功能一样,只是参数不一样。...

jmeter之BeanShell Sampler实现当前时间加1写法和指定日期

首先获取当前时间: import java.util.*;import java.text.SimpleDateFormat;String str1 = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date());String str2 = (new SimpleDateFormat("hh:mm:ss...

测试开发进阶——spring boot——MVC——get访问——使用@RequestParam获取参数(参数个数一致)

控制器: package com.awaimai.web; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframewo...