如何创建非本地路径的文件夹和复制文件

时间:2022-12-05 20:59:58
程序中有对非本地路径创建文件夹和复制文件,文件夹方面用了DirectoryExists(mypath)和CreateDir(mypath)这2个函数,文件方面用了FileExists(myfile)和CopyFile(myfile)这2个函数。
其中
1、如果mypath用的是本地路径就一切正常。
2、若路径写成网络路径如“\\\\192.168.1.12\\xyz”,运行则报错(已经共享该文件夹,而且机器的管理员帐号密码是相同的,所以不存在权限问题),并且程序非法关闭。
3、我也用了做盘符映射的方式把网络路径映射到K、J、L盘也不行。
4、有这样的情况,因为程序中有创建本地文件夹的部分,程序虽然非法退出,但是也创建了一个本地文件夹。

因此我猜测可能是跟文件夹有关的函数的问题。

故请问各位高手:
1、如何创建非本地文件夹?
2、文件方面的那2个函数对程序会不会有影响,如果有影响该如何改进?
非常感谢~

9 个解决方案

#1


因为没有具体做过,只是出个偏方,感觉你可以考虑用ftp的方式完成这个功能,直接用bcb的ftp控件,代码也好写

如果有人直接做过这个问题,说出问题,那是最好了,建议你等两天答案,顺便可以试下用ftp方式解决,我写代码的原则是条条大路通罗马,只要能解决问题的方法我就会考虑。。。

#2


磁盘映射应该没有问题

#3


to: 3996906
FTP方式如何实现,能不能给几个关键语句。另外,对方FTP服务是不是要打开?那样的话岂不是很麻烦?

to:UFOBH(随风飘)
我再仔细查一下我的代码本身有没有问题啊~

#4


我做过远程文件夹搬移的,用的是TSHFileOpStruct,可是刚才没找到,你试一试SHCreateDirectory和SHFileOpStruct,相关的结构体有很多,自己查查看吧,希望你能成功。

#5


CopyFile("C:\\1.txt","\\\\192.168.1.12\\C$\\2.txt",false); 这样没问题。
我的程序中就这么用的。

#6


我先用网络映射也没问题
var
  NetShare:NETRESOURCE;
  x:DWORD ;
  begin
    NetShare.dwType := RESOURCETYPE_DISK;
    NetShare.lpLocalName := PAnsiChar('z:');
    NetShare.lpRemoteName := PAnsiChar('\\192.168.0.114\c$');
    NetShare.lpProvider :='';
    x:=WNetAddConnection2(NetShare,'passwd','administrator', CONNECT_UPDATE_PROFILE);
    if  x<>NO_ERROR then
      ShowMessage(Syserrormessage(getlasterror()));
   //以下可对Z:操作
  end;

#7


看来这个需求大家经常遇到啊。。。。

#8


up

#9


检查出来是自己代码的问题~
谢谢大家~

#1


因为没有具体做过,只是出个偏方,感觉你可以考虑用ftp的方式完成这个功能,直接用bcb的ftp控件,代码也好写

如果有人直接做过这个问题,说出问题,那是最好了,建议你等两天答案,顺便可以试下用ftp方式解决,我写代码的原则是条条大路通罗马,只要能解决问题的方法我就会考虑。。。

#2


磁盘映射应该没有问题

#3


to: 3996906
FTP方式如何实现,能不能给几个关键语句。另外,对方FTP服务是不是要打开?那样的话岂不是很麻烦?

to:UFOBH(随风飘)
我再仔细查一下我的代码本身有没有问题啊~

#4


我做过远程文件夹搬移的,用的是TSHFileOpStruct,可是刚才没找到,你试一试SHCreateDirectory和SHFileOpStruct,相关的结构体有很多,自己查查看吧,希望你能成功。

#5


CopyFile("C:\\1.txt","\\\\192.168.1.12\\C$\\2.txt",false); 这样没问题。
我的程序中就这么用的。

#6


我先用网络映射也没问题
var
  NetShare:NETRESOURCE;
  x:DWORD ;
  begin
    NetShare.dwType := RESOURCETYPE_DISK;
    NetShare.lpLocalName := PAnsiChar('z:');
    NetShare.lpRemoteName := PAnsiChar('\\192.168.0.114\c$');
    NetShare.lpProvider :='';
    x:=WNetAddConnection2(NetShare,'passwd','administrator', CONNECT_UPDATE_PROFILE);
    if  x<>NO_ERROR then
      ShowMessage(Syserrormessage(getlasterror()));
   //以下可对Z:操作
  end;

#7


看来这个需求大家经常遇到啊。。。。

#8


up

#9


检查出来是自己代码的问题~
谢谢大家~