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