我正在尝试使用以下代码复制远程计算机共享文件夹中的文件。
myMethod (String paramUrl) { //URL of the folder shared on Remote machine
logger.info("paramUrl="+paramUrl);
URL url = new URL(paramUrl);
logger.info("Source file address="+url.getFile());
File inFile = new File(url.getFile());
String destFileName = "D://LOCAL_FOLDER+"//"+xyz.xml;
logger.info("destFileName="+destFileName);
File destFile = new File(destFileName);
FileUtils.copyFile(inFile, destFile);
}
::::输出是:::::::
paramUrl=file:////10.0.0.3//SHARED_FOLDER//xyz.xml
Source file address=////10.0.0.3//SHARED_FOLDER//xyz.xml
destFileName=D:/LOCAL_FOLDER//xyz.xml
java.io.FileNotFoundException: Source '\\10.0.0.3\SHARED_FOLDER\xyz.xml' does not exist
at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:637)
注意:
如果我尝试访问网址" \\ 10.0.0.3 \ SHARED_FOLDER"它使用RUN(在Windows中)工作正常。文件夹与每个人的读/写权限共享。
此外,如果我共享本地文件夹并尝试使用URL" //// localhost // LOCAL_SHARED_FOLDER / xyz.xml"从同一台计算机访问我的代码工作正常。
但我不知道,为什么它不能用于远程机器的ip-address,请大家帮帮我,为什么它不能正常工作
答案 0 :(得分:0)
修改强>:
遗漏了"文件://"部分。如果您将文件称为paramUrl=//10.0.0.3/SHARED_FOLDER/xyz.xml
,则复制操作应该有效。
旧:
如果将\\\10.0.0.3\SHARED_FOLDER
挂载到本地驱动器(例如X :),则可以传递参数
paramUrl=X:\xyz.xml
并且您可以复制该文件,因为它的行为是本地文件。
如果您无法将Windows中的远程驱动器作为本地驱动器安装,请查看http://jcifs.samba.org/。有一个Java API如何处理smb / samba共享。