Delphi的移动文件方法(转)/删除文件:/文件的复制
RenameFile,DeleteFile,MoveFile
Delphi的移动文件方法
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');
以上都是可行的。
Delphi的移动文件方法(转)/删除文件:/文件的复制的更多相关文章
- 应用程序启动后修改自身EXE文件或自删除EXE文件(附VC++6.0源码)
在CSDN论坛看到这么一个问题:如何为第三方工具加上使用限制次数?问题的答案很简单,重新做一个应用程序,将第三方程序打包进这个应用程序,启动应用程序时可以检查第三方工具的使用次数,检查通过,可运行第三 ...
- linux批量压缩当前目录中文件后,删除原文件
linux批量压缩当前目录中文件后,删除原文件 for i in `ls|awk -F " " '{print $NF}'`; do tar -zcvf $i.tar.gz $i ...
- Python之文件处理-递归删除特定文件
Python之文件处理-递归删除特定文件 #!/usr/bin/env python # -*- coding:utf-8 -*- import os def delete_particular_fi ...
- 指定文件夹 指定文件后缀名 删除整个文件夹 git 冲突解决 create a new repository on the command line push an existing repository from the command line
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840038939c2 ...
- IO流案例:1.复制多级文件夹 2.删除多级文件夹
package copy; /* 需求:复制多级文件夹 复制d:\\itcast(包含文件和子文件夹)到模块目录下 分析: d:\\itcast a.txt b.txt javaweb a.xml b ...
- 两个简单的python文件,实现删除本地文件夹和mongodb数据库的内容
删除本地文件夹: import os , string , datetime ; str = '/home/niuguoqin/tmp/tomcat/'; b = (datetime.datetime ...
- [转载] 与WIN不同,linux替换文件夹会删除原文件夹下的全部内容!
今天差点把源码给覆盖掉了><...555... 虚惊一场!!看了一篇博客分析这种情况.我的环境是CentOS5.5,不会出现文件夹直接被覆盖的情况,但是在Linux下不要用Win下的一些直 ...
- centos 文件新建、删除、移动、复制等命令
创建目录 mkdir 文件名 mkdir /var/www/test cp复制命令 cp命令复制文件从一个位置到另一位置.如果目的地文件存在,将覆复写该文件: 如果目的地目录存在,文件将复制到该目录下 ...
- 从a文件判断是否删除b文件中的行(sed示例)
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html test.xml文件很大,内容结构如下: <?xml v ...
随机推荐
- poj 3301 Texas Trip 三分法
思路:三分法求解凸函数的极值,三分法介绍在这:http://hi.baidu.com/czyuan_acm/item/81b21d1910ea729c99ce33db 很容易就可以推出旋转后的坐标: ...
- ssh远程执行命令并自动退出(已测试通过)
转自:http://blog.csdn.net/fdipzone/article/details/23000201 ssh命令格式如下: usage: ssh [-1246AaCfgKkMNnqsTt ...
- 【疯狂Java学习笔记】【理解面向对象】
[学习笔记]1.Java语言是纯粹的面向对象语言,这体现在Java完全支持面向对象的三大基本特征:封装.继承.多态.抽象也是面向对象的重要组成部分,不过它不是面向对象的特征之一,因为所有的编程语言都需 ...
- 核心思想:早胜过一切,张小龙的Foxmail居然可以卖1200万
现在谁都可以做一个类似的软件,但是市场已经成熟了,满大街都是,也就没有人会来收购你的软件了.
- POJ2586——Y2K Accounting Bug
Y2K Accounting Bug Description Accounting for Computer Machinists (ACM) has sufferred from the Y2K ...
- Tableau
http://tableau.analyticservice.net/desktop.html
- VMware下ubuntu与win8共享文件时/mnt/hgfs目录为空的解决办法
VMware下ubuntu(guest)与win8共享文件时/mnt/hgfs目录为空的解决办法 环境:VMware-player-5.0.2-1031769 + ubuntu13.04 1.安装vm ...
- VS2010调试 --指南 Reference from : http://blog.csdn.net/kingzone_2008/article/details/8133048
1 导言 在软件开发周期中,测试和修正缺陷(defect,defect与bug的区别:Bug是缺陷的一种表现形式,而一个缺陷是可以引起多种Bug的) 的时间远多于写代码的时间.通常,debug是指发现 ...
- vbox android x86 分辨率
D:\Program Files\Oracle\VirtualBox>VBoxManage setextradata "android" "CustomVideoM ...
- 纯干货,Spring-data-jpa详解,全方位介绍
本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求.这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring ...