1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs.provider.bzip2;
18
19
20
21
22 import org.apache.commons.vfs.FileName;
23 import org.apache.commons.vfs.FileObject;
24 import org.apache.commons.vfs.FileSystemException;
25 import org.apache.commons.vfs.provider.compressed.CompressedFileFileObject;
26 import org.apache.commons.vfs.provider.compressed.CompressedFileFileSystem;
27
28 import java.io.IOException;
29 import java.io.InputStream;
30 import java.io.OutputStream;
31
32 /***
33 * the bzip2 file
34 *
35 * @author <a href="mailto:imario@apache.org">Mario Ivankovits</a>
36 * @version $Revision: 480428 $ $Date: 2006-11-29 07:15:24 +0100 (Mi, 29 Nov 2006) $
37 */
38 public class Bzip2FileObject extends CompressedFileFileObject
39 {
40 protected Bzip2FileObject(FileName name, FileObject container, CompressedFileFileSystem fs)
41 {
42 super(name, container, fs);
43 }
44
45 protected InputStream doGetInputStream() throws Exception
46 {
47
48 InputStream is = getContainer().getContent().getInputStream();
49 return wrapInputStream(getName().getURI(), is);
50 }
51
52 public static InputStream wrapInputStream(final String name, final InputStream is) throws IOException
53 {
54 final int b1 = is.read();
55 final int b2 = is.read();
56 if (b1 != 'B' || b2 != 'Z')
57 {
58 throw new FileSystemException("vfs.provider.compressedFile/not-a-compressedFile-file.error", name);
59 }
60 return new CBZip2InputStream(is);
61 }
62
63 protected OutputStream doGetOutputStream(boolean bAppend) throws Exception
64 {
65 OutputStream os = getContainer().getContent().getOutputStream(false);
66 os.write('B');
67 os.write('Z');
68
69 return new CBZip2OutputStream(os);
70 }
71 }