!636 !modern main { psvm { split(args[0]); } static long splitSize = 1024*1024; // 0 = auto static int n; static void split(String path) ctex { File file = new File(path); print("== Processing " + path); long destSize = splitSize != 0 ? splitSize : file.length()/2; ZipFile zipFile = new ZipFile(file); Enumeration entries = zipFile.entries(); n = 1; String outPath = path + "." + n; print("Writing " + outPath); FileOutputStream fout = new FileOutputStream(outPath); ZipOutputStream zout = new ZipOutputStream(fout); long size = 0; while (entries.hasMoreElements()) { ZipEntry entry = (ZipEntry) entries.nextElement(); System.out.println("File found: " + entry.getName()); zout.putNextEntry(new ZipEntry(entry.getName())); InputStream fin = zipFile.getInputStream(entry); copyStream(fin, zout); fin.close(); size += entry.getCompressedSize(); if (size >= destSize) { size = 0; zout.close(); fout.close(); ++n; outPath = path + "." + n; print("Writing " + outPath); fout = new FileOutputStream(outPath); zout = new ZipOutputStream(fout); } } zout.close(); fout.close(); zipFile.close(); } }