1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.codehaus.plexus.archiver.zip;
19
20 import java.io.IOException;
21 import java.io.InputStream;
22 import java.nio.file.Files;
23 import java.nio.file.Path;
24
25 import org.apache.commons.compress.parallel.ScatterGatherBackingStore;
26
27 public class DeferredScatterOutputStream implements ScatterGatherBackingStore {
28
29 private final OffloadingOutputStream dfos;
30
31 public DeferredScatterOutputStream(int threshold) {
32 dfos = new OffloadingOutputStream(threshold, "scatterzipfragment", "zip");
33 }
34
35 @Override
36 public InputStream getInputStream() throws IOException {
37 return dfos.getInputStream();
38 }
39
40 @Override
41 public void writeOut(byte[] data, int offset, int length) throws IOException {
42 dfos.write(data, offset, length);
43 }
44
45 @Override
46 public void closeForWriting() throws IOException {
47 dfos.close();
48 }
49
50 @Override
51 public void close() throws IOException {
52 Path file = dfos.getOutputPath();
53 if (file != null) {
54 Files.deleteIfExists(file);
55 }
56 }
57 }