1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs.provider.ram;
18
19 import java.io.IOException;
20 import java.io.OutputStream;
21
22 import org.apache.commons.vfs.FileSystemException;
23
24 /***
25 * OutputStream to a RamFile
26 */
27 public class RamFileOutputStream extends OutputStream
28 {
29
30 /***
31 * File
32 */
33 protected RamFileObject file;
34
35 /***
36 * buffer
37 */
38 protected byte buffer1[] = new byte[1];
39
40 protected boolean closed = false;
41
42 private IOException exc;
43
44 /***
45 * @param mode
46 */
47 public RamFileOutputStream(RamFileObject file)
48 {
49 super();
50 this.file = file;
51 }
52
53
54
55
56
57
58 public void write(byte[] b, int off, int len) throws IOException
59 {
60 int size = this.file.getData().size();
61 int newSize = this.file.getData().size() + len;
62
63 try
64 {
65 this.file.resize(newSize);
66 }
67 catch (IOException e)
68 {
69 this.exc = e;
70 throw e;
71 }
72 System.arraycopy(b, off, this.file.getData().getBuffer(), size, len);
73 }
74
75
76
77
78
79
80 public void write(int b) throws IOException
81 {
82 buffer1[0] = (byte) b;
83 this.write(buffer1);
84 }
85
86 public void flush() throws IOException
87 {
88 }
89
90 public void close() throws IOException
91 {
92 if (closed)
93 {
94 return;
95 }
96
97 if (exc != null)
98 {
99 throw exc;
100 }
101 try
102 {
103 this.closed = true;
104
105 this.file.endOutput();
106 }
107 catch (Exception e)
108 {
109 throw new FileSystemException(e);
110 }
111 }
112
113 }