怎么样用API函数拷贝移动文件? ( 积分: 100 )

  • 主题发起人 主题发起人 warket
  • 开始时间 开始时间
W

warket

Unregistered / Unconfirmed
GUEST, unregistred user!
我想利用windows自带的功能进行移动文件,因为这样的速度最快,用DELPHI编写的函数是可以的,但是她的实现原理是文件的拷贝和文件的删除结合起来的,所以速度比较慢。而系统自带的移动却可以很快,因为只要该一下文件目录表就可以了。
那么怎么实现呢?
SHFileOperation这个函数是可以实现上述的问题,但是却不支持长文件名,请问各位高手有没有什么好的方法?
 
MoveFile
MoveFileA
MoveFileW
MoveFileEx
MoveFileExA
MoveFileExW
这些都是,函数来自 kernel32.dll ,delphi申明在windows单元内。
 
移动目录也可以?
好像不行。。
 
这个是move file用的,要移动目录,需要自己一个一个移动文件,可以用递归做。
删除目录倒是可以用RemoveDirectory
 
系统就是用的SHFileOperation
怎么可能不支持长文件名?
 
呵呵,SHFileOperation是有这个长文件名问题的,msdn上说,只有在使用相对路径时才有长文件名问题,使用绝对路径是正常的。
 
简单又快:
Procedure MoveIt(Source,Dest:string);
var
F : File;
begin
AssignFile (F, source);
Rename (F, Dest);
End;
 
ufo!的说法基本上是对的,谢谢!
不过目录的表示方法需要特别注意,就是比如说要移动c:/temp/ddr/jsd的目录,大部分的时候直接是可以的但是会出错,我试过了,当最后一个目录的字符是9个的时候就会出现找不到原盘,应该写成c://temp//ddr//jsd 以此类推。
 
后退
顶部