具有UNC路径的Java Files.walkFileTree

具有UNC路径的Java Files.walkFileTree,java,unc,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.xx

我试图在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());
    }
然而,我得到的只是格式错误的异常或简单的\xxx.xxx.xxx.xxx\04\u传输\Edgar\Folder\u同步\u测试:Der Netzwerkname wurde nicht gefunden。(未找到网络名/路径)

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


这里的“test”类只是扩展了SimpleFileVisitor,您的第一个字符串url的格式是正确的。你正确地避开了反斜杠

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

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


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

如果用户能够使用列出网络共享上的目录

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
类中出现了错误。

正常,因此问题出在网络中。

是否执行
dir\\xxx.xxx.xx.xxx\04\u TRANSFER\Edgar\Folder\u Sync\u Test
工作?@如果您无法从命令行访问网络共享,则是次优的。为什么你认为你的应用程序会这样?@次优啊,不,我想你是说在Java中,cmd是goodThank,我会检查一下