/* * [TestZipFileSystem.java] * * Summary: Example to manipulate a Zip file via FileSystem class. * * Copyright: (c) 2012-2017 Roedy Green, Canadian Mind Products, http://mindprod.com * * Licence: This software may be copied and used freely for any purpose but military. * http://mindprod.com/contact/nonmil.html * * Requires: JDK 1.8+ * * Created with: JetBrains IntelliJ IDEA IDE http://www.jetbrains.com/idea/ * * Version History: * 1.0 2012-04-05 initial version * 1.1 2013-03-26 add more env parms. */ package com.mindprod.example; import java.net.URI; import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.HashMap; import java.util.Map; /** * Example to manipulate a Zip file via FileSystem class. * * @author Roedy Green, Canadian Mind Products * @version 1.1 2013-03-26 add more env parms. * @since 2012-04-05 */ public final class TestZipFileSystem { public static void main( String[] args ) throws Throwable { // creates a file called C:\temp\azip.zip, if it does not exist already, // and adds file C:\temp\afile.txt to it as \SomeTextFile.txt // build the local configuration Map for the FileSystem. // Arrange to have zip created if it does not exist already. final Map env = new HashMap<>(); env.put( "create", "true" ); env.put( "blockSize", "128k" ); // create a link to the zip final URI uri = URI.create( "jar:file:///C:/temp/bzip.zip" ); // using the new Java 7 try resource syntax try (final FileSystem zipfs = FileSystems.newFileSystem( uri, env )) { // get handle to external file final Path source = Paths.get( "C:/temp/afile.txt" ); // get handle to member internal to zip final Path target = zipfs.getPath( "/SomeTextFile.txt" ); // copy afile.txt as /Sometextfile.txt file into the zip file Files.copy( source, target, StandardCopyOption.REPLACE_EXISTING ); // note we don't absolutely have to flush or close the FileSystem, though it is a wise practice. zipfs.close(); } } }