Delphi 文件的操作:重命名、复制、移动、删除
第一种方法:
RenameFile('Oldname', 'Newname'); CopyFile(PChar('Oldname'), PChar('Newname'), False); MoveFile(PChar('Oldname'), PChar('Newname')); DeleteFile(文件名);
第二种方法:
在Delphi可以使用ShellApi单元中的函数SHFileOperation来实现消息上传控件的制作, SHFileOperation函数可以实现各种文件操作,只需将文件操作命令(拷贝、剪切、删除、重命名)发送给 它,它就会实现Windows资源管理器那样的文件操作功能。该函数的声明如下:
function SHFileOperation(constract lpFileOp : LPSHFILEOPSTRUCT): Integer;stdcall;
LPSHFILEOPSTRUCT的结构类型:
typedef struct _SHFILEOPSTRUCT{
HWND hwnd; // 显示对话框的句柄
UINT wFunc; // 指明操作类型,支持4种操作:FO_COPY拷贝、FO_MOVE剪切、 FO_DELETE删除、FO_RENAME重命名。
LPCSTR pFrom; // 源文件路径,可以是多个文件
LPCSTR pTo; // 目标路径,可以是路径或文件名,FO_DELETE时,该参数不起作用
FILEOP_FLAGS fFlags; // 标志,附加的风格选项
BOOL fAnyOperationsAborted; // 是否可被中断
LPVOID hNameMappings; // 文件映射名字,可在其它 Shell 函数中使用
LPCSTR lpszProgressTitle; // 只在 FOF_SIMPLEPROGRESS 时,指定对话框的标题。
}SHFILEOPSTRUCT;
例如:
uses ShellAPI;
type
TFileCommand=(fcCopy,fcMove,fcDelete,fcRename);
procedure TForm1.FileOperation(aCommand: FileCommand; var aFromFile, aToFile: String);
var FileOp: TSHFileOPStruct;
begin
ZeroMemory(@FileOp, sizeof(FileOp));
FileOp.Wnd := Form1.Handle; //显示一个进度对话框,但不显示文件名。
FileOp.fFlags := FOF_SimpleProgress; //String类型转换到PAnsiChar类型,需要经过AnsiString类型
FileOp.pFrom := PAnsiChar( AnsiString(aFromFile));
FileOp.pTo := PAnsiChar( AnsiString(aToFile));
case aCommand of
fcCopy: FileOp.wFunc := FO_COPY; // 复制文件
fcMove: FileOp.wFunc := FO_MOVE; // 移动文件
fcDelete: FileOp.wFunc := FO_DELETE; // 删除文件
fcRename: FileOp.wFunc := FO_RENAME; // 重命名文件
end;
SHFileOperation(FileOp);
end;