| /* |
| * XZDecDemo |
| * |
| * Author: Lasse Collin <[email protected]> |
| * |
| * This file has been put into the public domain. |
| * You can do whatever you want with this file. |
| */ |
| |
| import java.io.*; |
| import org.tukaani.xz.*; |
| |
| /** |
| * Decompresses .xz files to standard output. If no arguments are given, |
| * reads from standard input. |
| */ |
| class XZDecDemo { |
| public static void main(String[] args) { |
| byte[] buf = new byte[8192]; |
| String name = null; |
| |
| try { |
| if (args.length == 0) { |
| name = "standard input"; |
| InputStream in = new XZInputStream(System.in); |
| |
| int size; |
| while ((size = in.read(buf)) != -1) |
| System.out.write(buf, 0, size); |
| |
| } else { |
| // Read from files given on the command line. |
| for (int i = 0; i < args.length; ++i) { |
| name = args[i]; |
| InputStream in = new FileInputStream(name); |
| |
| try { |
| // Since XZInputStream does some buffering internally |
| // anyway, BufferedInputStream doesn't seem to be |
| // needed here to improve performance. |
| // in = new BufferedInputStream(in); |
| in = new XZInputStream(in); |
| |
| int size; |
| while ((size = in.read(buf)) != -1) |
| System.out.write(buf, 0, size); |
| |
| } finally { |
| // Close FileInputStream (directly or indirectly |
| // via XZInputStream, it doesn't matter). |
| in.close(); |
| } |
| } |
| } |
| } catch (FileNotFoundException e) { |
| System.err.println("XZDecDemo: Cannot open " + name + ": " |
| + e.getMessage()); |
| System.exit(1); |
| |
| } catch (EOFException e) { |
| System.err.println("XZDecDemo: Unexpected end of input on " |
| + name); |
| System.exit(1); |
| |
| } catch (IOException e) { |
| System.err.println("XZDecDemo: Error decompressing from " |
| + name + ": " + e.getMessage()); |
| System.exit(1); |
| } |
| } |
| } |