使用Apache FileUtils从共享源文件夹到本地目标文件夹的文件复制失败

时间:2015-02-25 14:19:37

标签: java apache fileutils

我正在尝试使用以下代码复制远程计算机共享文件夹中的文件。

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,请大家帮帮我,为什么它不能正常工作

1 个答案:

答案 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共享。