@Override public void close() throws IOException { if (closed) { return; } flush(); closed = true; if (bytesWritten) { this.buffer = null; } else { //truncate this.buffer = Arrays.copyOf(this.buffer, this.count); } }
@Override public void close() throws IOException { if (closed) { return; } flush(); closed = true; if (bytesWritten) { this.buffer = null; } else { //truncate this.buffer = Arrays.copyOf(this.buffer, this.count); } }
@Override public void close() throws IOException { if (closed) { return; } flush(); closed = true; if (bytesWritten) { this.buffer = null; } else { //truncate this.buffer = Arrays.copyOf(this.buffer, this.count); } }
@Override public InputStream getInputStream() throws IOException { if (!saved) { if (!returned) { returned = true; return sis; } //save the rest of the stream SaveOnReadInputStream.this.fsos.flush(); long start = SaveOnReadInputStream.this.fsisf.getLength(); SaveOnReadInputStream.this.close(); //force the pending read InputStream is = SaveOnReadInputStream.this.fsisf.getInputStream(start, -1); sis.setIn(is); } return fsisf.getInputStream(); }
@Override public InputStream getInputStream() throws IOException { if (!saved) { if (!returned) { returned = true; return sis; } //save the rest of the stream SaveOnReadInputStream.this.fsos.flush(); long start = SaveOnReadInputStream.this.fsisf.getLength(); SaveOnReadInputStream.this.close(); //force the pending read InputStream is = SaveOnReadInputStream.this.fsisf.getInputStream(start, -1); sis.setIn(is); } return fsisf.getInputStream(); }
@Override public InputStream getInputStream() throws IOException { if (!saved) { if (!returned) { returned = true; return sis; } //save the rest of the stream SaveOnReadInputStream.this.fsos.flush(); long start = SaveOnReadInputStream.this.fsisf.getLength(); SaveOnReadInputStream.this.close(); //force the pending read InputStream is = SaveOnReadInputStream.this.fsisf.getInputStream(start, -1); sis.setIn(is); } return fsisf.getInputStream(); }
@Test public void testGrowth() throws Exception { FileStorageManager sm = getStorageManager(null, null); FileStore store = sm.createFileStore("0"); FileStoreOutputStream fsos = store.createOutputStream(1<<15); assertTrue(fsos.getBuffer().length < 1<<15); fsos.write(1); fsos.write(new byte[1<<14]); fsos.flush(); assertEquals(1 + (1<<14), fsos.getCount()); assertEquals(1<<15, fsos.getBuffer().length); }
@Test public void testFlush() throws Exception { FileStorageManager sm = getStorageManager(null, null); FileStore store = sm.createFileStore("0"); FileStoreOutputStream fsos = store.createOutputStream(2); fsos.write(new byte[3]); fsos.write(1); fsos.flush(); assertEquals(0, fsos.getCount()); }