java向zip文件中添加新文件,javazip文件添加,import java.
分享于 点击 46944 次 点评:60
java向zip文件中添加新文件,javazip文件添加,import java.
import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Enumeration;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;import java.util.zip.ZipOutputStream;public class Main { // 4MB buffer private static final byte[] BUFFER = new byte[4096 * 1024]; /** * copy input to output stream - available in several StreamUtils or Streams classes */ public static void copy(InputStream input, OutputStream output) throws IOException { int bytesRead; while ((bytesRead = input.read(BUFFER))!= -1) { output.write(BUFFER, 0, bytesRead); } } public static void main(String[] args) throws Exception { // read war.zip and write to append.zip ZipFile war = new ZipFile("war.zip"); ZipOutputStream append = new ZipOutputStream(new FileOutputStream("append.zip")); // first, copy contents from existing war Enumeration<? extends ZipEntry> entries = war.entries(); while (entries.hasMoreElements()) { ZipEntry e = entries.nextElement(); System.out.println("copy: " + e.getName()); append.putNextEntry(e); if (!e.isDirectory()) { copy(war.getInputStream(e), append); } append.closeEntry(); } // now append some extra content ZipEntry e = new ZipEntry("answer.txt"); System.out.println("append: " + e.getName()); append.putNextEntry(e); append.write("42\n".getBytes()); append.closeEntry(); // close war.close(); append.close(); }}
用户点评