使用JCIFS SmbFile.renameTo()方法有最奇怪的行为。当我执行下面的代码时,应该将网络文件从test1移到test2,但是相反,它在test2中创建了一个名为test.xml的文件夹,并引发以下错误“该文件已经存在时无法创建文件...”,我可以不知道。为什么用这种方法呢?

 NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication (sDomain,
                                       sUsername, sPassword);
 SmbFile smbFromFile = new SmbFile("smb://test1/test.xml", auth);
 SmbFile smbToFile = new SmbFile("smb://test2/test.xml", auth);
 smbFromFile.renameTo(smbToFile);

最佳答案

copyTo(SmbFile)renameTo(SmbFile)之间有一个有趣的区别-只有其中一个说此文件和目标文件不需要在同一主机上。由于renameTo(SmbFile)并不是这样,所以我只能假设您应该使用copyTo,然后使用delete()原始格式。

SmbFile smbFromFile = new SmbFile("smb://test1/test.xml", auth);
SmbFile smbToFile = new SmbFile("smb://test2/test.xml", auth);
// smbFromFile.renameTo(smbToFile);
smbFromFile.copyTo(smbToFile);
smbFromFile.delete();

07-28 03:48