@Override public void close() throws IOException { out.close(); } }
@Override public void close() throws IOException { out.close(); } }
@Override public void run() { try { DataBuffer buffer = writableBuffers.take(); int currentFile = buffer.fileID; byte[][] dataBuffers = buffer.data; FileOutputStream logOutputStream = new FileOutputStream(new File(targetDirectory, "robotData." + currentFile + ".xz")); XZOutputStream xzOutputStream = new XZOutputStream(logOutputStream, new LZMA2Options(COMPRESSION_LEVEL)); int writtenLength = 0; for (int i = 0; i < getNumberOfVariables(); i++) { writtenLength += buffer.length * 8; xzOutputStream.write(dataBuffers[i], 0, buffer.length * 8); } out.println("Wrote " + writtenLength / (1024 * 1024) + " MB to robotData." + currentFile + ".xz"); xzOutputStream.close(); logOutputStream.close(); availableBuffers.put(buffer); incrementProgressMonitor(); } catch (IOException | InterruptedException e) { e.printStackTrace(); } }
@Override public void run() { try { DataBuffer buffer = writableBuffers.take(); int currentFile = buffer.fileID; byte[][] dataBuffers = buffer.data; FileOutputStream logOutputStream = new FileOutputStream(new File(out + "robotData." + currentFile + ".xz")); XZOutputStream xzOutputStream = new XZOutputStream(logOutputStream, new LZMA2Options(COMPRESSION_LEVEL)); int writtenLength = 0; for (int i = 0; i < getNumberOfVariables(); i++) { writtenLength += dataBuffers[i].length; xzOutputStream.write(dataBuffers[i]); } System.out.println("Wrote " + writtenLength / (1024 * 1024) + " MB"); xzOutputStream.close(); logOutputStream.close(); availableBuffers.put(buffer); } catch (IOException | InterruptedException e) { e.printStackTrace(); } }
@Override public void run() { try { DataBuffer buffer = writableBuffers.take(); int currentFile = buffer.fileID; byte[][] dataBuffers = buffer.data; FileOutputStream logOutputStream = new FileOutputStream(new File(targetDirectory, "robotData." + currentFile + ".xz")); XZOutputStream xzOutputStream = new XZOutputStream(logOutputStream, new LZMA2Options(COMPRESSION_LEVEL)); int writtenLength = 0; for (int i = 0; i < getNumberOfVariables(); i++) { writtenLength += buffer.length * 8; xzOutputStream.write(dataBuffers[i], 0, buffer.length * 8); } out.println("Wrote " + writtenLength / (1024 * 1024) + " MB to robotData." + currentFile + ".xz"); xzOutputStream.close(); logOutputStream.close(); availableBuffers.put(buffer); incrementProgressMonitor(); } catch (IOException | InterruptedException e) { e.printStackTrace(); } }
private static byte[] xz(byte[] data, byte[] checksums, File path) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); LZMA2Options options = new LZMA2Options(); options.setPreset(8); XZOutputStream xz = new XZOutputStream(out, options); int x = checksums.length; xz.write(data); xz.write(checksums); xz.write(new byte[]{ (byte) (x & 0x000000FF), (byte)((x & 0x0000FF00) >> 8), (byte)((x & 0x00FF0000) >> 16), (byte)((x & 0xFF000000) >> 24) }); xz.write("SIGN".getBytes()); //Add our sign to validate xz.close(); byte[] xzed = out.toByteArray(); Files.write(xzed, new File(path.getAbsolutePath() + ".pack.xz")); return xzed; }