NonCachedRandomAccessFileByteWriter.java 1.62 KB
/*
 * Decompiled with CFR 0_118.
 */
package com.adobe.internal.io;

import com.adobe.internal.io.ByteWriter;
import java.io.IOException;
import java.io.RandomAccessFile;

public class NonCachedRandomAccessFileByteWriter
implements ByteWriter {
    private RandomAccessFile file;

    public NonCachedRandomAccessFileByteWriter(RandomAccessFile file) throws IOException {
        this.file = file;
    }

    @Override
    public void write(long position, byte[] b, int offset, int length) throws IOException {
        this.file.seek(position);
        this.file.write(b, offset, length);
    }

    @Override
    public void write(long position, int b) throws IOException {
        this.file.seek(position);
        this.file.write(b);
    }

    @Override
    public long length() throws IOException {
        return this.file.length();
    }

    @Override
    public void flush() throws IOException {
    }

    @Override
    public void close() throws IOException {
        this.file.close();
    }

    public String toString() {
        return this.file.toString();
    }

    @Override
    public int read(long position) throws IOException {
        if (position < 0 || position >= this.length()) {
            return -1;
        }
        this.file.seek(position);
        return this.file.read();
    }

    @Override
    public int read(long position, byte[] b, int offset, int length) throws IOException {
        if (position < 0 || position >= this.file.length()) {
            return -1;
        }
        this.file.seek(position);
        return this.file.read(b, offset, (int)Math.min((long)length, this.file.length() - position));
    }
}