我试图以递归方式列出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
答案 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)
好的,问题出在网络上。