带有UNC路径的Java Files.walkFileTree

时间:2016-03-04 15:12:16

标签: java unc

我试图以递归方式列出UNC路径下的目录。我的代码适用于常规本地目录。

我尝试了很多uri格式和许多API调用组合,即。

    String url = "\\\\xxx.xxx.xx.xxx\\04_TRANSFER\\Edgar\\Folder_Sync_Test";
    String url2 = "file://xxx.xxx.xx.xxx/04_TRANSFER/Edgar/Folder_Sync_Test";
    String url3 = "file:////xxx.xxx.xx.xxx/04_TRANSFER/Edgar/Folder_Sync_Test";

    UNCTest test = new UNCTest();
    File f = new File(url);
    System.out.println("============================================");
    try {
        Files.walkFileTree(f.toPath(), test);
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
    System.out.println("============================================");
    try {
        Files.walkFileTree(Paths.get(URI.create(url2)), test);
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
    System.out.println("============================================");
    try {
        Files.walkFileTree(Paths.get(URI.create(url3)), test);
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }

但是我得到的只是MalformedUrlException(s)或者只是\ xxx.xxx.xxx.xxx \ 04_TRANSFER \ Edgar \ Folder_Sync_Test:Der Netzwerkname wurde nicht gefunden。 (找不到网络名称/路径路径)。

我开始怀疑是否有可能在这里做我想做的事情?

PS。这里的“测试”类只是扩展了SimpleFileVisitor

3 个答案:

答案 0 :(得分:0)

第一个String网址的格式是正确的。你正确地逃避了反斜杠。

尝试调试可能与环境相关的问题有点困难。

也许尝试从本地计算机上创建UNC共享,然后将此应用程序指向它作为测试。

如果可行,则可能是您的问题与权限有关。仔细检查执行应用程序的用户是否对UNC文件共享具有适当的权限。

答案 1 :(得分:0)

如果用户能够使用

列出网络共享上的目录
dir \\xxx.xxx.xx.xxx\04_TRANSFER\Edgar\Folder_Sync_Test

以下内容也必须适用于同一用户

File url = new File("\\\\xxx.xxx.xx.xxx\\04_TRANSFER\\Edgar\\Folder_Sync_Test");
File[] listFiles = url.listFiles();
// Files.walkFileTree(url.toPath(), fileVisitor);

File url2 = new File("//xxx.xxx.xx.xxx/04_TRANSFER/Edgar\Folder_Sync_Test");
File[] listFiles = url2.listFiles();
// Files.walkFileTree(url2.toPath(), fileVisitor);

如果url.listFiles()有效,那么错误可能就在您的UNCTest课程中。

答案 2 :(得分:0)

好的,问题出在网络上。