Java Language Accéder au contenu d'un fichier ZIP


Exemple

L'API FileSystem de Java 7 permet de lire et d'ajouter des entrées depuis ou vers un fichier Zip à l'aide de l'API de fichier Java NIO, de la même manière que pour tout autre système de fichiers.

Le FileSystem est une ressource qui doit être correctement fermée après utilisation. Par conséquent, le bloc try-with-resources doit être utilisé.

Lecture d'un fichier existant

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();
}

Créer un nouveau fichier

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();
}