import java.io.*; import com.elharo.io.*; public class FileDumper { public static final int ASC = 0; public static final int DEC = 1; public static final int HEX = 2; public static void main(String[] args) { if (args.length < 1) { System.err.println("Usage: java FileDumper [-ahd] file1 file2..."); return; } int firstArg = 0; int mode = ASC; if (args[0].startsWith("-")) { firstArg = 1; if (args[0].equals("-h")) mode = HEX; else if (args[0].equals("-d")) mode = DEC; } for (int i = firstArg; i < args.length; i++) { try { if (mode == ASC) dumpAscii(args[i]); else if (mode == HEX) dumpHex(args[i]); else if (mode == DEC) dumpDecimal(args[i]); } catch (IOException ex) { System.err.println("Error reading from " + args[i] + ": " + ex.getMessage()); } if (i < args.length-1) { // more files to dump System.out.println("\r\n--------------------------------------\r\n"); } } } public static void dumpAscii(String filename) throws IOException { FileInputStream fin = null; try { fin = new FileInputStream(filename); StreamCopier.copy(fin, System.out); } finally { if (fin != null) fin.close(); } } public static void dumpDecimal(String filename) throws IOException { FileInputStream fin = null; byte[] buffer = new byte[16]; boolean end = false; try { fin = new FileInputStream(filename); while (!end) { int bytesRead = 0; while (bytesRead < buffer.length) { int r = fin.read(buffer, bytesRead, buffer.length - bytesRead); if (r == -1) { end = true; break; } bytesRead += r; } for (int i = 0; i < bytesRead; i++) { int dec = buffer[i]; if (dec < 0) dec = 256 + dec; if (dec < 10) System.out.print("00" + dec + " "); else if (dec < 100) System.out.print("0" + dec + " "); else System.out.print(dec + " "); } System.out.println(); } } finally { if (fin != null) fin.close(); } } public static void dumpHex(String filename) throws IOException { FileInputStream fin = null; byte[] buffer = new byte[24]; boolean end = false; try { fin = new FileInputStream(filename); while (!end) { int bytesRead = 0; while (bytesRead < buffer.length) { int r = fin.read(buffer, bytesRead, buffer.length - bytesRead); if (r == -1) { end = true; break; } bytesRead += r; } for (int i = 0; i < bytesRead; i++) { int hex = buffer[i]; if (hex < 0) hex = 256 + hex; if (hex >= 16) System.out.print(Integer.toHexString(hex) + " "); else System.out.print("0" + Integer.toHexString(hex) + " "); } System.out.println(); } } finally { if (fin != null) fin.close(); } } }
FileDumper Class in java
FileDumper Class in java