java - 如何使用 "Zip File System Provider"在 Java 中遍历 ZIP 文件?

标签 java jsp filesystems zip

我有一个 JSP 应用程序,它允许用户上传 ZIP 文件,然后该应用程序将读取 ZIP 中的所有文件并将它们存储在 MySQL 中。

根据建议,我决定使用“Zip File System Provider”来处理 ZIP 文件:

Path zipPath = Paths.get(zipFile.getSubmittedFileName());//returns the path to the ZIP file
FileSystem fs = FileSystems.newFileSystem(zipPath, null);//creates the file system

我尝试使用以下方法遍历它:

for (FileStore store: fs.getFileStores()) {
         System.err.println("Store:  " + store.name());
}

但是它只循环一次并返回 tmp.zip,这是整个 ZIP。如何一个一个地提取物理图像文件,以便将它们存储在 MySQL 中。

最佳答案

这是遍历给定 ZIP 文件并打印其中每个文件的前 16 个字节的代码。

Path filePath = Paths.get("somefile.zip");
FileSystem fileSystem = FileSystems.newFileSystem(filePath, null);
byte[] buffer = new byte[16];
Base64.Encoder encoder = Base64.getEncoder();
for (Path rootDirectory : fileSystem.getRootDirectories()) {
    Files.walk(rootDirectory).forEach(path -> {
        System.out.print(path);
        if (Files.isRegularFile(path)) {
            System.out.print(" ");
            try (InputStream stream = Files.newInputStream(path)) {
                int length = stream.read(buffer);
                for (int i = 0; i < length; i++) {
                    byte b = buffer[i];
                    if (32 <= b && b < 127) {
                        System.out.print((char) b);
                    } else {
                        System.out.printf("\\%02x", b);
                    }
                }
            } catch (IOException e) {
                throw new UncheckedIOException(e);
            }
        }
        System.out.println();
    });
}

关于java - 如何使用 "Zip File System Provider"在 Java 中遍历 ZIP 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38894464/

相关文章:

java - Tomcat : How to share data between two applications?

c - 获取安装在 solaris 11.2 机器上的卷列表

java - 添加隐藏字段时 Spring 表单不提交

java - 如何在java中创建另存为对话框?

iphone - 如何在 iPhone 上使用 fopen()?

c++ - 如何检测磁盘已满错误并让程序在获得可用磁盘空间后恢复

java - strip 对象元数据字段的使命是什么?

java - java中默认和生成的串行版本uid有什么区别?

java - 有没有办法只替换 java 匹配器正则表达式中的一个捕获组?

java - Microstrategy Web API - JAVA SDK