Streaming zip
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Writing 0 | |
Wrote 1 | |
Reading folder/file1 | |
Writing 1 | |
Wrote 2 | |
File time: Fri Jan 02 05:29:14 CST 2015 | |
This is file 1 | |
Reading folder/file2 | |
File time: Fri Jan 02 05:29:14 CST 2015 | |
Writing 2 | |
Wrote 3 | |
This is file 2 | |
Reading folder/file3 | |
File time: Fri Jan 02 05:29:16 CST 2015 | |
Writing 3 | |
Wrote 4 | |
This is file 3 | |
Reading folder/file4 | |
File time: Fri Jan 02 05:29:16 CST 2015 | |
Writing 4 | |
Wrote 5 | |
This is file 4 | |
Reading folder/file5 | |
File time: Fri Jan 02 05:29:18 CST 2015 | |
Writing 5 | |
Wrote 6 | |
This is file 5 | |
Reading folder/file6 | |
File time: Fri Jan 02 05:29:18 CST 2015 | |
Writing 6 | |
Wrote 7 | |
This is file 6 | |
Reading folder/file7 | |
File time: Fri Jan 02 05:29:20 CST 2015 | |
Writing 7 | |
Wrote 8 | |
This is file 7 | |
Reading folder/file8 | |
File time: Fri Jan 02 05:29:20 CST 2015 | |
Writing 8 | |
Wrote 9 | |
This is file 8 | |
Reading folder/file9 | |
File time: Fri Jan 02 05:29:22 CST 2015 | |
Writing 9 | |
Wrote 10 | |
This is file 9 | |
Reading folder/file10 | |
File time: Fri Jan 02 05:29:22 CST 2015 | |
Writing 10 | |
Wrote 11 | |
This is file 10 | |
Reading folder/file11 | |
File time: Fri Jan 02 05:29:24 CST 2015 | |
Writing 11 | |
Wrote 12 | |
This is file 11 | |
Reading folder/file12 | |
File time: Fri Jan 02 05:29:24 CST 2015 | |
Writing 12 | |
Wrote 13 | |
This is file 12 | |
Reading folder/file13 | |
File time: Fri Jan 02 05:29:26 CST 2015 | |
Writing 13 | |
Wrote 14 | |
This is file 13 | |
Reading folder/file14 | |
File time: Fri Jan 02 05:29:26 CST 2015 | |
Writing 14 | |
Wrote 15 | |
This is file 14 | |
Reading folder/file15 | |
File time: Fri Jan 02 05:29:28 CST 2015 | |
Writing 15 | |
Wrote 16 | |
This is file 15 | |
Reading folder/file16 | |
File time: Fri Jan 02 05:29:28 CST 2015 | |
Writing 16 | |
Wrote 17 | |
This is file 16 | |
Reading folder/file17 | |
File time: Fri Jan 02 05:29:30 CST 2015 | |
Writing 17 | |
Wrote 18 | |
This is file 17 | |
Reading folder/file18 | |
File time: Fri Jan 02 05:29:30 CST 2015 | |
Writing 18 | |
Wrote 19 | |
This is file 18 | |
Reading folder/file19 | |
File time: Fri Jan 02 05:29:32 CST 2015 | |
Writing 19 | |
Wrote 20 | |
This is file 19 | |
Reading folder/file20 | |
File time: Fri Jan 02 05:29:32 CST 2015 | |
Writing 20 | |
Wrote 21 | |
This is file 20 | |
Reading folder/file21 | |
File time: Fri Jan 02 05:29:34 CST 2015 | |
Writing 21 | |
Wrote 22 | |
This is file 21 | |
Reading folder/file22 | |
File time: Fri Jan 02 05:29:34 CST 2015 | |
Writing 22 | |
Wrote 23 | |
This is file 22 | |
Reading folder/file23 | |
File time: Fri Jan 02 05:29:36 CST 2015 | |
Writing 23 | |
Wrote 24 | |
This is file 23 | |
Reading folder/file24 | |
File time: Fri Jan 02 05:29:36 CST 2015 | |
Writing 24 | |
Wrote 25 | |
This is file 24 | |
Reading folder/file25 | |
File time: Fri Jan 02 05:29:38 CST 2015 | |
Writing 25 | |
Wrote 26 | |
This is file 25 | |
Reading folder/file26 | |
File time: Fri Jan 02 05:29:38 CST 2015 | |
Writing 26 | |
Wrote 27 | |
This is file 26 | |
Reading folder/file27 | |
File time: Fri Jan 02 05:29:40 CST 2015 | |
Writing 27 | |
Wrote 28 | |
This is file 27 | |
Reading folder/file28 | |
File time: Fri Jan 02 05:29:40 CST 2015 | |
Writing 28 | |
Wrote 29 | |
This is file 28 | |
Reading folder/file29 | |
File time: Fri Jan 02 05:29:42 CST 2015 | |
Writing 29 | |
Wrote 30 | |
This is file 29 | |
Reading folder/file30 | |
File time: Fri Jan 02 05:29:42 CST 2015 | |
Writing 30 | |
Wrote 31 | |
This is file 30 | |
Reading folder/file31 | |
File time: Fri Jan 02 05:29:44 CST 2015 | |
Writing 31 | |
Wrote 32 | |
This is file 31 | |
Reading folder/file32 | |
File time: Fri Jan 02 05:29:44 CST 2015 | |
Writing 32 | |
Wrote 33 | |
This is file 32 | |
Reading folder/file33 | |
File time: Fri Jan 02 05:29:46 CST 2015 | |
Writing 33 | |
Wrote 34 | |
This is file 33 | |
Reading folder/file34 | |
File time: Fri Jan 02 05:29:46 CST 2015 | |
Writing 34 | |
Wrote 35 | |
This is file 34 | |
Reading folder/file35 | |
File time: Fri Jan 02 05:29:48 CST 2015 | |
Writing 35 | |
Wrote 36 | |
This is file 35 | |
Reading folder/file36 | |
File time: Fri Jan 02 05:29:48 CST 2015 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.BufferedReader; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import java.io.InputStreamReader; | |
import java.io.PipedInputStream; | |
import java.io.PipedOutputStream; | |
import java.nio.charset.Charset; | |
import java.util.Date; | |
import java.util.concurrent.atomic.AtomicLong; | |
import java.util.zip.ZipEntry; | |
import java.util.zip.ZipInputStream; | |
import java.util.zip.ZipOutputStream; | |
public class ZipStreamer implements Runnable { | |
private static final Charset UTF8 = Charset.forName("UTF-8"); | |
private AtomicLong counter = new AtomicLong(); | |
private PipedOutputStream out; | |
private ZipOutputStream zipOut; | |
public ZipStreamer() { | |
out = new PipedOutputStream(); | |
zipOut = new ZipOutputStream(out, UTF8); | |
new Thread(this).start(); | |
} | |
public static void main(String[] args) throws IOException { | |
ZipStreamer z = new ZipStreamer(); | |
ZipInputStream zipIn = new ZipInputStream(z.getInputStream(), UTF8); | |
while (true) { | |
ZipEntry entry = zipIn.getNextEntry(); | |
if (entry == null) { | |
break; | |
} | |
System.out.println("Reading " + entry.getName()); | |
System.out.println("File time: " + new Date(entry.getTime())); | |
// Naive - this only works because we only produce lines in the producer | |
BufferedReader reader = new BufferedReader(new InputStreamReader(zipIn, UTF8)); | |
String line = reader.readLine(); | |
System.out.println(line); | |
System.out.flush(); | |
} | |
} | |
public InputStream getInputStream() throws IOException { | |
return new PipedInputStream(out); | |
} | |
@Override | |
public void run() { | |
while (true) { | |
try { | |
Thread.sleep(1000); | |
System.out.println("Writing " + counter.get()); | |
ZipEntry e = new ZipEntry("folder/file" + counter.incrementAndGet()); | |
zipOut.putNextEntry(e); | |
zipOut.write(("This is file " + counter.get() + "\n\n") | |
.getBytes(UTF8)); | |
zipOut.closeEntry(); | |
System.out.println("Wrote " + counter.get()); | |
} catch (Exception e) { | |
try { | |
zipOut.close(); | |
} catch (IOException e1) { | |
} | |
break; | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment