【发布时间】:2013-02-01 20:48:13
【问题描述】:
我在使用 java nio 遍历 zip 文件的 VFS(虚拟文件系统)的文件树时遇到异常,这是我的代码:
public static void list(String zipFilePath) throws IOException{
FileSystem fs = FileSystems.newFileSystem(Paths.get(zipFilePath), null);
Path startPath = fs.getPath("/");
Files.walkFileTree(startPath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
System.out.println("Dir : " + dir);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("\t->File : " + file);
return FileVisitResult.CONTINUE;
}
});
}
异常表明文件不存在,但我已解压缩存档 (zip),并且文件在那里...知道为什么吗?
这里是个例外:
java.nio.file.NoSuchFileException: /Dir1/Dir2/Dir3/Dir4/ExcelFile.xlsm
at com.sun.nio.zipfs.ZipPath.getAttributes(ZipPath.java:657)
at com.sun.nio.zipfs.ZipFileSystemProvider.readAttributes(ZipFileSystemProvider.java:285)
at java.nio.file.Files.readAttributes(Files.java:1669)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:105)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:199)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:69)
at java.nio.file.Files.walkFileTree(Files.java:2585)
at java.nio.file.Files.walkFileTree(Files.java:2618)
顺便说一句:代码确实可以工作,但它会因某些文件而崩溃
【问题讨论】:
-
它失败的文件是否有任何模式?总是xlsm?压缩文件中使用的任何密码?
-
不,不,我至少可以看到...
-
你有没有想过这个问题?我也很难过。从stackoverflow.com/questions/14436032/… cmets 我目前的猜测是它正在调用某种本机窗口 getAttributes in error 或什么...jdk 错误? jdk错误只是在Windows上?你在窗户上吗?
-
是的,让我添加我的答案,谢谢你提醒我这个
标签: java zip nio virtualfilesystem