Delphi 文件的操做:重命名、複製、移動、刪除app
第一種方法:函數
RenameFile('Oldname', 'Newname'); CopyFile(PChar('Oldname'), PChar('Newname'), False); MoveFile(PChar('Oldname'), PChar('Newname')); DeleteFile(文件名);orm
第二種方法: 資源
在Delphi可使用ShellApi單元中的函數SHFileOperation來實現消息上傳控件的製做, SHFileOperation函數能夠實現各類文件操做,只需將文件操做命令(拷貝、剪切、刪除、重命名)發送給 它,它就會實現Windows資源管理器那樣的文件操做功能。該函數的聲明以下:it
function SHFileOperation(constract lpFileOp : LPSHFILEOPSTRUCT): Integer;stdcall;io
LPSHFILEOPSTRUCT的結構類型:function
typedef struct _SHFILEOPSTRUCT{ 方法
HWND hwnd; // 顯示對話框的句柄 im
UINT wFunc; // 指明操做類型,支持4種操做:FO_COPY拷貝、FO_MOVE剪切、 FO_DELETE刪除、FO_RENAME重命名。call
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;