@Override public void seek(long pos) throws IOException { this.rac.seek(pos); }
@Override public long getFilePointer() throws IOException { return content.getFilePointer(); }
@Override public void close() throws IOException { this.rac.close(); }
ra.writeBytes(TEST_DATA); Assert.assertEquals(TEST_DATA.length(), ra.length()); ra.setLength(1); Assert.assertEquals(1, ra.length()); ra.seek(0); Assert.assertEquals(ra.readByte(), TEST_DATA.charAt(0)); ra.readByte(); Assert.fail("Expected " + Exception.class.getName()); } catch (final IOException e) { ra.setLength(2); Assert.assertEquals(2, ra.length()); ra.seek(1); ra.readByte();
byte c = ra.readByte(); assertEquals(c, TEST_DATA.charAt(0)); assertEquals("fp", ra.getFilePointer(), 1); ra.seek(3); c = ra.readByte(); assertEquals(c, TEST_DATA.charAt(3)); assertEquals("fp", ra.getFilePointer(), 4); c = ra.readByte(); assertEquals(c, TEST_DATA.charAt(4)); assertEquals("fp", ra.getFilePointer(), 5); ra.seek(3); c = ra.readByte(); assertEquals(c, TEST_DATA.charAt(3)); assertEquals("fp", ra.getFilePointer(), 4); c = ra.readByte(); assertEquals(c, TEST_DATA.charAt(4)); assertEquals("fp", ra.getFilePointer(), 5); ra.seek(10); c = ra.readByte(); assertEquals(c, TEST_DATA.charAt(10)); assertEquals("fp", ra.getFilePointer(), 11); c = ra.readByte(); assertEquals(c, TEST_DATA.charAt(11));
public InputStream newStream(final long start, final long end) { try { final long newFileStart = this.fileStart + start; final long newFileEnd = end < 0 ? this.fileEnd : this.fileStart + end; final RandomAccessContent rac = fo.getContent().getRandomAccessContent(RandomAccessMode.READ); rac.seek(newFileStart); return new SharedRandomContentInputStream(createdStreams, fo, newFileStart, newFileEnd, rac.getInputStream()); } catch (final IOException e) { throw new RuntimeException(e); } }
ra.writeByte(TEST_DATA.charAt(0)); ra.seek(3); ra.writeByte(TEST_DATA.charAt(3)); ra.writeByte(TEST_DATA.charAt(4)); ra.seek(3); ra.writeByte(TEST_DATA.charAt(7)); ra.writeByte(TEST_DATA.charAt(8)); ra.seek(10); ra.writeByte(TEST_DATA.charAt(10)); ra.writeByte(TEST_DATA.charAt(11)); ra.seek(0); assertEquals(ra.readByte(), TEST_DATA.charAt(0)); ra.seek(3); assertEquals(ra.readByte(), TEST_DATA.charAt(7)); assertEquals(ra.readByte(), TEST_DATA.charAt(8)); ra.seek(10); assertEquals(ra.readByte(), TEST_DATA.charAt(10)); assertEquals(ra.readByte(), TEST_DATA.charAt(11)); } finally { if (file != null) {
public LoadingInfo(FileObject fileObject, boolean tailing, OpenMode openMode) throws IOException { this.fileObject = fileObject; this.tailing = tailing; friendlyUrl = fileObject.getName().getFriendlyURI(); fileObject.refresh(); InputStream inputStream = fileObject.getContent().getInputStream(); byte[] probe = loadProbe(inputStream, 10000); gzipped = checkIfIsGzipped(probe, probe.length); inputStreamBufferedStart = gzipped ? ungzip(probe) : probe; if (openMode == FROM_START || gzipped) { PushbackInputStream pushBackInputStream = new PushbackInputStream(inputStream, probe.length + 1); // +1 to support empty files pushBackInputStream.unread(probe); observableInputStreamImpl = new ObservableInputStreamImpl(pushBackInputStream); contentInputStream = gzipped ? new GZIPInputStream(observableInputStreamImpl) : observableInputStreamImpl; } else { RandomAccessContent randomAccessContent = fileObject.getContent().getRandomAccessContent(READ); randomAccessContent.seek(randomAccessContent.length()); observableInputStreamImpl = new ObservableInputStreamImpl(randomAccessContent.getInputStream()); contentInputStream = observableInputStreamImpl; } if (fileObject.getType().hasContent()) { lastFileSize = fileObject.getContent().getSize(); } }
private long readLines(RandomAccessContent reader) throws IOException, FileServerConnectorException { long pos = reader.getFilePointer(); long rePos = pos; List<Byte> list = new ArrayList<>(); int num; int lines = 0; boolean throttled = false; for (; ((num = read(reader, inbuf)) != -1) && !throttled; pos = reader.getFilePointer()) { for (int i = 0; (i < num) && !throttled; ++i) { byte ch = this.inbuf[i]; if (ch == 10) { Byte[] line = new Byte[list.size()]; line = list.toArray(line); EventListener.fileUpdated(line, messageProcessor, serviceName); lines++; list.clear(); rePos = pos + (long) i + 1L; } else { list.add(ch); } if (maxLinesPerPoll != -1 && (lines > maxLinesPerPoll) && ch == 10) { throttled = true; } } } reader.seek(rePos); return rePos; }
@Override public InputStream getInputStream() throws IOException { return content.getInputStream(); }
@Override public long length() throws IOException { return this.rac.length(); }
@Override public void write(final int b) throws IOException { content.write(b); }
@Override public byte readByte() throws IOException { return content.readByte(); }
@Override public int read(byte[] b, int off, int len) throws IOException { this.rac.readFully(b, off, len); return len; }
@Override public int skipBytes(final int n) throws IOException { return content.skipBytes(n); }
@Override public void setLength(final long newLength) throws IOException { content.setLength(newLength); }
ra.writeBytes(TEST_DATA); Assert.assertEquals(TEST_DATA.length(), ra.length()); ra.setLength(1); Assert.assertEquals(1, ra.length()); ra.seek(0); Assert.assertEquals(ra.readByte(), TEST_DATA.charAt(0)); ra.readByte(); Assert.fail("Expected " + Exception.class.getName()); } catch (final IOException e) { ra.setLength(2); Assert.assertEquals(2, ra.length()); ra.seek(1); ra.readByte();
byte c = ra.readByte(); assertEquals(c, TEST_DATA.charAt(0)); assertEquals("fp", ra.getFilePointer(), 1); ra.seek(3); c = ra.readByte(); assertEquals(c, TEST_DATA.charAt(3)); assertEquals("fp", ra.getFilePointer(), 4); c = ra.readByte(); assertEquals(c, TEST_DATA.charAt(4)); assertEquals("fp", ra.getFilePointer(), 5); ra.seek(3); c = ra.readByte(); assertEquals(c, TEST_DATA.charAt(3)); assertEquals("fp", ra.getFilePointer(), 4); c = ra.readByte(); assertEquals(c, TEST_DATA.charAt(4)); assertEquals("fp", ra.getFilePointer(), 5); ra.seek(10); c = ra.readByte(); assertEquals(c, TEST_DATA.charAt(10)); assertEquals("fp", ra.getFilePointer(), 11); c = ra.readByte(); assertEquals(c, TEST_DATA.charAt(11));
public InputStream newStream(long start, long end) { try { long newFileStart = this.fileStart+start; long newFileEnd = end<0?this.fileEnd:this.fileStart+end; RandomAccessContent rac = fo.getContent().getRandomAccessContent(RandomAccessMode.READ); rac.seek(newFileStart); return new SharedRandomContentInputStream( createdStreams, fo, newFileStart, newFileEnd, rac.getInputStream()); } catch (IOException e) { throw new RuntimeException(e); } }