1*21943e31SAndroid Build Coastguard Worker /* 2*21943e31SAndroid Build Coastguard Worker * XZDecDemo 3*21943e31SAndroid Build Coastguard Worker * 4*21943e31SAndroid Build Coastguard Worker * Author: Lasse Collin <[email protected]> 5*21943e31SAndroid Build Coastguard Worker * 6*21943e31SAndroid Build Coastguard Worker * This file has been put into the public domain. 7*21943e31SAndroid Build Coastguard Worker * You can do whatever you want with this file. 8*21943e31SAndroid Build Coastguard Worker */ 9*21943e31SAndroid Build Coastguard Worker 10*21943e31SAndroid Build Coastguard Worker import java.io.*; 11*21943e31SAndroid Build Coastguard Worker import org.tukaani.xz.*; 12*21943e31SAndroid Build Coastguard Worker 13*21943e31SAndroid Build Coastguard Worker /** 14*21943e31SAndroid Build Coastguard Worker * Decompresses .xz files to standard output. If no arguments are given, 15*21943e31SAndroid Build Coastguard Worker * reads from standard input. 16*21943e31SAndroid Build Coastguard Worker */ 17*21943e31SAndroid Build Coastguard Worker class XZDecDemo { main(String[] args)18*21943e31SAndroid Build Coastguard Worker public static void main(String[] args) { 19*21943e31SAndroid Build Coastguard Worker byte[] buf = new byte[8192]; 20*21943e31SAndroid Build Coastguard Worker String name = null; 21*21943e31SAndroid Build Coastguard Worker 22*21943e31SAndroid Build Coastguard Worker try { 23*21943e31SAndroid Build Coastguard Worker if (args.length == 0) { 24*21943e31SAndroid Build Coastguard Worker name = "standard input"; 25*21943e31SAndroid Build Coastguard Worker InputStream in = new XZInputStream(System.in); 26*21943e31SAndroid Build Coastguard Worker 27*21943e31SAndroid Build Coastguard Worker int size; 28*21943e31SAndroid Build Coastguard Worker while ((size = in.read(buf)) != -1) 29*21943e31SAndroid Build Coastguard Worker System.out.write(buf, 0, size); 30*21943e31SAndroid Build Coastguard Worker 31*21943e31SAndroid Build Coastguard Worker } else { 32*21943e31SAndroid Build Coastguard Worker // Read from files given on the command line. 33*21943e31SAndroid Build Coastguard Worker for (int i = 0; i < args.length; ++i) { 34*21943e31SAndroid Build Coastguard Worker name = args[i]; 35*21943e31SAndroid Build Coastguard Worker InputStream in = new FileInputStream(name); 36*21943e31SAndroid Build Coastguard Worker 37*21943e31SAndroid Build Coastguard Worker try { 38*21943e31SAndroid Build Coastguard Worker // Since XZInputStream does some buffering internally 39*21943e31SAndroid Build Coastguard Worker // anyway, BufferedInputStream doesn't seem to be 40*21943e31SAndroid Build Coastguard Worker // needed here to improve performance. 41*21943e31SAndroid Build Coastguard Worker // in = new BufferedInputStream(in); 42*21943e31SAndroid Build Coastguard Worker in = new XZInputStream(in); 43*21943e31SAndroid Build Coastguard Worker 44*21943e31SAndroid Build Coastguard Worker int size; 45*21943e31SAndroid Build Coastguard Worker while ((size = in.read(buf)) != -1) 46*21943e31SAndroid Build Coastguard Worker System.out.write(buf, 0, size); 47*21943e31SAndroid Build Coastguard Worker 48*21943e31SAndroid Build Coastguard Worker } finally { 49*21943e31SAndroid Build Coastguard Worker // Close FileInputStream (directly or indirectly 50*21943e31SAndroid Build Coastguard Worker // via XZInputStream, it doesn't matter). 51*21943e31SAndroid Build Coastguard Worker in.close(); 52*21943e31SAndroid Build Coastguard Worker } 53*21943e31SAndroid Build Coastguard Worker } 54*21943e31SAndroid Build Coastguard Worker } 55*21943e31SAndroid Build Coastguard Worker } catch (FileNotFoundException e) { 56*21943e31SAndroid Build Coastguard Worker System.err.println("XZDecDemo: Cannot open " + name + ": " 57*21943e31SAndroid Build Coastguard Worker + e.getMessage()); 58*21943e31SAndroid Build Coastguard Worker System.exit(1); 59*21943e31SAndroid Build Coastguard Worker 60*21943e31SAndroid Build Coastguard Worker } catch (EOFException e) { 61*21943e31SAndroid Build Coastguard Worker System.err.println("XZDecDemo: Unexpected end of input on " 62*21943e31SAndroid Build Coastguard Worker + name); 63*21943e31SAndroid Build Coastguard Worker System.exit(1); 64*21943e31SAndroid Build Coastguard Worker 65*21943e31SAndroid Build Coastguard Worker } catch (IOException e) { 66*21943e31SAndroid Build Coastguard Worker System.err.println("XZDecDemo: Error decompressing from " 67*21943e31SAndroid Build Coastguard Worker + name + ": " + e.getMessage()); 68*21943e31SAndroid Build Coastguard Worker System.exit(1); 69*21943e31SAndroid Build Coastguard Worker } 70*21943e31SAndroid Build Coastguard Worker } 71*21943e31SAndroid Build Coastguard Worker } 72