Example usage for org.apache.commons.vfs2 RandomAccessContent seek

List of usage examples for org.apache.commons.vfs2 RandomAccessContent seek

Introduction

In this page you can find the example usage for org.apache.commons.vfs2 RandomAccessContent seek.

Prototype

void seek(long pos) throws IOException;

Source Link

Document

Sets the file-pointer offset, measured from the beginning of this file, at which the next read or write occurs.

Usage

From source file:org.freedesktop.mime.MagicEntry.java

public boolean match(FileObject file) throws IOException {
    RandomAccessContent s = file.getContent().getRandomAccessContent(RandomAccessMode.READ);
    try {//from w w  w.  j  a va 2s.  co m
        for (Pattern p : this) {

            byte[] val = p.getValue();
            byte[] mask = p.getMask();

            // Read in portion of file
            ByteBuffer buf = ByteBuffer.allocate(p.getRangeLength() + val.length);
            s.seek(p.getOffset());
            byte[] bufArr = buf.array();
            s.readFully(bufArr);

            int valIdx = 0;
            for (int i = 0; i < bufArr.length; i++) {
                if ((bufArr[i] & mask[valIdx]) == (val[valIdx] & mask[valIdx])) {
                    valIdx++;
                    if (valIdx == val.length) {
                        return true;
                    }
                } else {
                    valIdx = 0;
                }
            }
        }
    } finally {
        s.close();
    }
    return false;
}

From source file:pl.otros.logview.api.io.Utils.java

public static void reloadFileObject(LoadingInfo loadingInfo) throws IOException {
    loadingInfo.getFileObject().refresh();
    long lastFileSize = loadingInfo.getLastFileSize();
    long currentSize = loadingInfo.getFileObject().getContent().getSize();
    if (currentSize > lastFileSize) {
        IOUtils.closeQuietly(loadingInfo.getObserableInputStreamImpl());

        RandomAccessContent randomAccessContent = loadingInfo.getFileObject().getContent()
                .getRandomAccessContent(RandomAccessMode.READ);
        randomAccessContent.seek(lastFileSize);
        loadingInfo.setLastFileSize(currentSize);
        ObservableInputStreamImpl observableStream = new ObservableInputStreamImpl(
                randomAccessContent.getInputStream(), lastFileSize);
        loadingInfo.setObserableInputStreamImpl(observableStream);
        if (loadingInfo.isGziped()) {
            loadingInfo.setContentInputStream(new GZIPInputStream(observableStream));
        } else {//www.j  a  v  a2 s  . c o  m
            loadingInfo.setContentInputStream(observableStream);
        }
    } else if (currentSize < lastFileSize) {
        IOUtils.closeQuietly(loadingInfo.getObserableInputStreamImpl());
        InputStream inputStream = loadingInfo.getFileObject().getContent().getInputStream();
        ObservableInputStreamImpl observableStream = new ObservableInputStreamImpl(inputStream, 0);
        loadingInfo.setObserableInputStreamImpl(observableStream);
        if (loadingInfo.isGziped()) {
            loadingInfo.setContentInputStream(new GZIPInputStream(observableStream));
        } else {
            loadingInfo.setContentInputStream(observableStream);
        }
        loadingInfo.setLastFileSize(loadingInfo.getFileObject().getContent().getSize());
    }

}

From source file:pl.otros.logview.io.Utils.java

public static void reloadFileObject(LoadingInfo loadingInfo) throws IOException {
    loadingInfo.getFileObject().refresh();
    long lastFileSize = loadingInfo.getLastFileSize();
    long currentSize = loadingInfo.getFileObject().getContent().getSize();
    if (currentSize > lastFileSize) {
        IOUtils.closeQuietly(loadingInfo.getObserableInputStreamImpl());

        RandomAccessContent randomAccessContent = loadingInfo.getFileObject().getContent()
                .getRandomAccessContent(RandomAccessMode.READ);
        randomAccessContent.seek(lastFileSize);
        loadingInfo.setLastFileSize(currentSize);
        ObservableInputStreamImpl observableStream = new ObservableInputStreamImpl(
                randomAccessContent.getInputStream());
        loadingInfo.setObserableInputStreamImpl(observableStream);
        if (loadingInfo.isGziped()) {
            loadingInfo.setContentInputStream(new GZIPInputStream(observableStream));
        } else {/*from w  w  w. j av  a2s  .  c  o m*/
            loadingInfo.setContentInputStream(observableStream);
        }
    } else if (currentSize < lastFileSize) {
        IOUtils.closeQuietly(loadingInfo.getObserableInputStreamImpl());
        InputStream inputStream = loadingInfo.getFileObject().getContent().getInputStream();
        ObservableInputStreamImpl observableStream = new ObservableInputStreamImpl(inputStream);
        loadingInfo.setObserableInputStreamImpl(observableStream);
        if (loadingInfo.isGziped()) {
            loadingInfo.setContentInputStream(new GZIPInputStream(observableStream));
        } else {
            loadingInfo.setContentInputStream(observableStream);
        }
        loadingInfo.setLastFileSize(loadingInfo.getFileObject().getContent().getSize());
    }

}