package net.mcforkage.ant; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import lzma.sdk.lzma.Encoder; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; public class LzmaTask extends Task { private File input, output; public void setInput(File f) {input = f;} public void setOutput(File f) {output = f;} public static void main(String[] args) throws Exception { LzmaTask t = new LzmaTask(); t.setInput(new File("../../build/install-data.zip")); t.setOutput(new File("../../build/install-data.zip.lzma")); t.execute(); } @Override public void execute() throws BuildException { if(input == null) throw new BuildException("input file not specified"); if(output == null) throw new BuildException("output file not specified"); Encoder enc = new Encoder(); enc.setDictionarySize(1 << 26); try (InputStream in = new BufferedInputStream(new FileInputStream(input))) { try (OutputStream out = new BufferedOutputStream(new FileOutputStream(output))) { enc.writeCoderProperties(out); for(int k = 0; k < 8; k++) out.write(255); // file size = -1 enc.code(in, out, -1, -1, null); } } catch(IOException e) { throw new BuildException(e); } } }