访问 ZIP 文件的内容
Java 7 的 FileSystem API 允许使用 Java NIO 文件 API 从 Zip 文件读取和添加条目,其操作方式与在任何其他文件系统上操作相同。
FileSystem 是一种在使用后应该正确关闭的资源,因此应该使用 try-with-resources 块。
从现有文件中读取
Path pathToZip = Paths.get("path/to/file.zip");
try(FileSystem zipFs = FileSystems.newFileSystem(pathToZip, null)) {
Path root = zipFs.getPath("/");
... //access the content of the zip file same as ordinary files
} catch(IOException ex) {
ex.printStackTrace();
}
创建一个新文件
Map<String, String> env = new HashMap<>();
env.put("create", "true"); //required for creating a new zip file
env.put("encoding", "UTF-8"); //optional: default is UTF-8
URI uri = URI.create("jar:file:/path/to/file.zip");
try (FileSystem zipfs = FileSystems.newFileSystem(uri, env)) {
Path newFile = zipFs.getPath("/newFile.txt");
//writing to file
Files.write(newFile, "Hello world".getBytes());
} catch(IOException ex) {
ex.printStackTrace();
}