Delphi的移动文件方法(转)/删除文件:/文件的复制

RenameFile,DeleteFile,MoveFile

Delphi的移动文件方法

uses
  
ShellApi;

procedure ShellFileOperation(fromFile: string; toFile: string; Flags: Integer);
var
  
shellinfo: TSHFileOpStructA;
begin
   with
shellinfo do
   begin
    
wnd    := Application.Handle;
     wFunc := Flags;
     pFrom := PChar(fromFile);
     pTo    := PChar(toFile);
  end;
   SHFileOperation(shellinfo);
end;

// Example, Beispiel:

procedure TForm1.Button1Click(Sender: TObject);
begin
  
ShellFileOperation(‘c:\afile.txt‘, ‘d:\afile2.txt‘, FO_COPY);
  // To Move a file: FO_MOVE
end;

该方法的另一种表示:

function TScanFileThread.MoveFile(FileName: string): Boolean;
var
  F: TShFileOpStruct;
begin
  with F do begin
    Wnd := Handle;
    wFunc := FO_MOVE;
    pFrom := PChar(Directory + FileName + #0#0);
    pTo := PChar(SaveDirectory + FileName + #0#0);
    fFlags := FOF_RENAMEONCOLLISION or FOF_NOCONFIRMMKDIR;
  end;
  if ShFileOperation(F) = 0 then begin
    Result := True;
  end
  else begin
    Result := False;
  end;
end;

一开始pFrom和pTo没有以“#0#0”结尾,结果发现在有的机器上能移动成功,有的机器上SHFileOperation返回1026无法转移,查了一下资料

ShFileOperation中的pFrom和pTo中可以包含多个文件名,文件名之间用 ‘\0‘ 分割,最后以两个\0结束。

/////////////////////////////////////////////////////////////////////////

1、
CopyFile(PChar(源目录),PChar(目标目录),True);

CopyFileTo(‘F:\MyProject\delphi\message\data\data.mdb‘,‘c:\data.mdb‘);//不能覆盖已存在的文件******//   
//***************下面的这个WINAPI最后的一个参数为true时不覆盖已经存在的文件。为false时自动覆盖存在的文件。*********//   
//***************   
CopyFile(pchar(‘‘+MyPath+‘/data/data.mdb‘),pchar(‘‘+MyPath+‘/data/backup.mdb‘),false);

2、
api的不会   
我一般是在程序中根据程序所在目录建立一个批处理文件   
copy    x:\xxx\xxx.exe    c:;   
exit;   
   
在窗体创建或退出时执行;   
因为在外地网吧,所以不能提供代码,不过这个应该不难。

3、
也可以直接调用shellexec    winexec,   
shellexec(‘copy    gp.exe    c:‘)

4、
不用api的如下:   
procedure    CopyFile    (SourceName,    TargetName:    String);   
var   
      Stream1,    Stream2:    TFileStream;   
begin   
      Stream1    :=    TFileStream.Create    (SourceName,    fmOpenRead);   
      try   
          Stream2    :=    TFileStream.Create    (TargetName,    fmOpenWrite    or    fmCreate);   
          try   
              Stream2.CopyFrom    (Stream1,    Stream1.Size);   
          finally   
              Stream2.Free;   
          end   
      finally   
          Stream1.Free;   
      end   
end;

5、
如果是在本程序运行的时候复制本程序的话,可以这样:   
   
procedure    Tform1.formCreate(Sender:    TObject);   
var   
      s:Pchar;   
begin   
      s:=    Pchar(Application.ExeName);   
      copyfile(s,    ‘c:\a.exe‘,    true);   
end;

6、
CopyFile(PChar(源文件),PChar(目标文件),True);为False表示覆盖

7、
才看到这个贴子,可以用以下的方法:   
   
CopyFile(pchar(‘c:\sql.txt‘),    pchar(‘d:\sql.txt‘),    True);   
   
只要是文件的复制,都可以。   
   
移动文件:   
MoveFile(pchar(‘c:\sql.txt‘),    pchar(‘d:\sql.txt‘));   
   
删除文件:   
   
DeleteFile(‘c:\sql.txt‘);   
   
以上都是可行的。

时间: 2024-10-10 09:00:05

Delphi的移动文件方法(转)/删除文件:/文件的复制的相关文章

centos 文件新建、删除、移动、复制等命令

创建目录 mkdir 文件名 mkdir /var/www/test cp复制命令 cp命令复制文件从一个位置到另一位置.如果目的地文件存在,将覆复写该文件: 如果目的地目录存在,文件将复制到该目录下 (目录不会被复写). 语法:语法是cp [命令开关]… SOURCE DESTcp [OPTIONS]… SOURCE… DIRECTORYcp [OPTIONS]… –target-directory=DIRECTORY SOURCE… 命令开关: -a 等同于 -dpR. –backup[=C

python根据文件更改日期删除指定文件夹下面文件

经过一天的尝试,终于写了一个脚本,清理日志文件,源代码如下: #!/usr/bin/python#-*-coding=utf8 -*-import timeimport os N = 1     #设置删除多少天钱的文件def deletefile(path):    for eachfile in os.listdir(path):        filename = os.path.join(path,eachfile)        if os.path.isfile(filename):

delphi删除只读文件

只读文件就是不能删除的文件,用DeleteFile函数对它来说是毫无意义的,要删除只读文件,只有先改变它的属性.如果你要删除一个文件,最好先作两个方面的考虑: (1)判断该文件的属性.可以用上面提到的FileGetAttr与FileSetAttr函数.如果属性为只读,将它改为存档,然后删除它. (2)先用DeleteFile函数试删除一下该文件,如果返回值为假,表示没有删除成功,在对该文件进行属性修改,将它改为存档,然后再用DeleteFile进行删除. 第二种方法是常用的文件删除方法,如果你想

DEL、RD 命令删除特殊文件、文件夹

在Windows 使用过程中,有时有些特殊文件夹或文件删除不了,特别是带有系统保留字符的文件,如(con.bat).删除不了,这时可按以下方式做: 桌面右键-新建-文本文档-写入下列命令: DEL /F /A /Q \\?\%1 RD /S /Q \\?\%1 另存为"统统删除.bat" (名字叫什么都可以,不过后缀一定要".bat") 然后,要把要删除的文件或者目录拖放到这个bat文件的图标上就可以删除了!(成功删除后就可以把这个新建的文本文档放入回收站了) DE

ubuntukylin基础 终端 rm 删除一个文件

镇场文:       学儒家经世致用,行佛家普度众生,修道家全生保真,悟易理象数通变.以科技光耀善法,成就一良心博客.______________________________________________________________________________________________________ 我的系统:UbuntuKylin 16.04 LTS 64bit code: 1 查看当前文件夹 2 删除指定的文件 3 查看删除指定文件后的文件夹 tip: 用rm删除的文件

Hadoop如何恢复被删除的文件

hadoop的hdfs中被删除文件的恢复原理和回收站原理是一样的,就是在删除hdfs文件时,被删除的文件被移动到了hdfs的.Trash文件夹中,恢复时只需将该文件夹中文件拿出即可.具体操作如下: 1 设置.Trash文件夹 如果需要恢复hdfs中文件,就需要设置.Trash,hadoop的.Trash默认是关闭的.具体设置如下: <property>          <name>fs.trash.interval</name>          <value&

Java文件File操作一:文件的创建和删除

一.简述 File 文件类,主要对文件进行相关操作.常用的File操作有:文件(夹)的创建.文件(夹)的删除,文件的读入和下载(复制)等: 二.文件(夹)的创建和删除 1.创建过程 实例: //create a new File @Test public void testCreateFile(){ File m=new File("E://file"); //創建文件夾 //判断文件夹存在否 if(!m.exists()){ m.mkdir(); //创建文件夹 } File f=n

android 使用AsyncHttpClient框架上传文件以及使用HttpURLConnection下载文件

AsyncHttpClient开源框架android-async-http还是非常方便的. AsyncHttpClient该类通经常使用在android应用程序中创建异步GET, POST, PUT和DELETE HTTP请求.请求參数通过RequestParams实例创建.响应通过重写匿名内部类 ResponseHandlerInterface的 方法处理. 1.看代码上传文件 public void uploadFile(ArrayList<String> sendFilesPath) {

delphi 文件的操作:重命名、复制、移动、删除

Delphi 文件的操作:重命名.复制.移动.删除第一种方法: RenameFile('Oldname', 'Newname'); CopyFile(PChar('Oldname'), PChar('Newname'), False); MoveFile(PChar('Oldname'), PChar('Newname')); DeleteFile(文件名); 第二种方法: 在Delphi可以使用ShellApi单元中的函数SHFileOperation来实现消息上传控件的制作, SHFileO