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 import org.apache.commons.vfs2.FileSystemException;
23
24
25
26
27 public class RamFileOutputStream extends OutputStream {
28
29
30
31
32 protected RamFileObject file;
33
34
35
36
37 protected byte[] buffer1 = new byte[1];
38
39
40 protected boolean closed;
41
42 private IOException exception;
43
44
45
46
47 public RamFileOutputStream(final RamFileObject file) {
48 this.file = file;
49 }
50
51
52
53
54
55
56 @Override
57 public void write(final byte[] b, final int off, final int len) throws IOException {
58 final RamFileData data = this.file.getData();
59 final int size = data.size();
60 final int newSize = size + len;
61
62 try {
63 this.file.resize(newSize);
64 } catch (final IOException e) {
65 this.exception = e;
66 throw e;
67 }
68 System.arraycopy(b, off, data.getContent(), size, len);
69 }
70
71
72
73
74
75
76 @Override
77 public void write(final int b) throws IOException {
78 buffer1[0] = (byte) b;
79 this.write(buffer1);
80 }
81
82 @Override
83 public void flush() throws IOException {
84 }
85
86 @Override
87 public void close() throws IOException {
88 if (closed) {
89 return;
90 }
91
92 if (exception != null) {
93 throw exception;
94 }
95 try {
96 this.closed = true;
97
98 this.file.endOutput();
99 } catch (final Exception e) {
100 throw new FileSystemException(e);
101 }
102 }
103
104 }