File Viewer, Part 4
Because of the nature of filter streams, it is relatively
straightforward to add decompression services to the
FileDumper
program last seen in Chapter 7. Generally, you’ll want to decompress a
file before dumping it. Adding decompression does not require a new
dump filter. Instead, it simply requires passing the file through an
inflater input stream before passing it to one of the dump filters.
We’ll let the user choose from either gzipped or deflated files
with the command-line switches -gz
and
-deflate
. When one of these switches is seen, the
appropriate inflater input stream is selected; it is an error to
select both. Example 9.15,
FileDumper4
, demonstrates.
Example 9-15. FileDumper4
import java.io.*; import java.util.zip.*; import com.macfaq.io.*; public class FileDumper4 { public static final int ASC = 0; public static final int DEC = 1; public static final int HEX = 2; public static final int SHORT = 3; public static final int INT = 4; public static final int LONG = 5; public static final int FLOAT = 6; public static final int DOUBLE = 7; public static void main(String[] args) { if (args.length < 1) { System.err.println("Usage: java FileDumper4 [-ahdsilfx] [-little]"+ "[-gzip|-deflated] file1..."); } boolean bigEndian = true; int firstFile = 0; int mode = ASC; boolean deflated = false; boolean gzipped = false; // Process command-line switches. for (firstFile = 0; firstFile < args.length; firstFile++) { if (!args[firstFile].startsWith("-")) break; if (args[firstFile].equals("-h")) ...
Get Java I/O now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.