package org.webpieces.router.impl.compression; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; public class FileUtil { /** * Ideally, we should NOT have urlPath here but for testing, it allows us to verify some very useful information so we * don't break a very important piece of the system that we would never see broken in dev server mode. */ public byte[] readFileContents(String urlPath, File src) throws IOException { long len = src.length(); if(len > Integer.MAX_VALUE) throw new UnsupportedOperationException("File to large to process"); try (FileInputStream in = new FileInputStream(src)) { int size = (int) len; if (size == 0) { return new byte[0]; } final byte[] data = new byte[size]; int offset = 0; int readed; while (offset < size && (readed = in.read(data, offset, size - offset)) != -1) { offset += readed; } if (offset != size) { throw new IOException("Unexpected readed size. current: " + offset + ", excepted: " + size); } return data; } } public void writeFile(OutputStream compressionOut, byte[] allData, String urlPath, File src) throws IOException { compressionOut.write(allData, 0, allData.length); } }