2016-03-04 51 views
0

我想递归列出UNC路径下的一个目录。我的代码与常规本地目录一起工作。带有UNC路径的Java Files.walkFileTree

我已经尝试了许多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 \埃德加\ Folder_Sync_Test:明镜Netzwerkname wurde nicht gefunden。 (找不到网络名称/路径路径)。

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

PS。这里的“测试”类简单地扩展了SimpleFileVisitor

+0

'dir \\ xxx.xxx.xx.xxx \ 04_TRANSFER \ Edgar \ Folder_Sync_Test'工作吗? – SubOptimal

+0

@SubOptimal不幸没有 –

+0

如果您没有从命令行访问网络共享的权限。你为什么期望你的应用程序会? – SubOptimal

回答

0

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

尝试调试可能与环境有关的问题有点具有挑战性。

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

如果那有效,那么也许你的问题与权限有关。仔细检查执行应用程序的用户是否具有UNC文件共享的相应权限。

+0

谢谢你会检查出来 –

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

0

好的,所以问题出在网络上。