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