package pl.shockah; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; public class BinFile { public final File file; public final boolean gzip; public BinFile(File file) {this(file,false);} public BinFile(File file, boolean gzip) { this.file = file; this.gzip = gzip; } public BinBuffer read() {return read(file.length());} public BinBuffer read(long bytes) { BinBuffer binb = new BinBuffer((int)file.length()); read(binb,bytes); return binb; } public void read(BinBuffer buffer) {read(buffer,file.length());} public void read(BinBuffer buffer, long bytes) { if (file.exists()) { try { int value; long read = 0; InputStream is = new BufferedInputStream(new FileInputStream(file)); if (gzip) is = new GZIPInputStream(is); while ((value = is.read()) != -1) { buffer.writeByte(value); if (++read == bytes) break; } is.close(); } catch (Exception e) {e.printStackTrace();} } } public void write(BinBuffer buffer) { if (file.exists()) file.delete(); append(buffer); } public void append(BinBuffer buffer) { try { if (!file.exists()) file.createNewFile(); OutputStream os = new BufferedOutputStream(new FileOutputStream(file,true)); if (gzip) os = new GZIPOutputStream(os); while (buffer.bytesLeft() > 0) os.write(buffer.readByte()); os.flush(); os.close(); } catch (Exception e) {e.printStackTrace();} } }