/* * Created on 13-3-29 * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. * * Copyright @2013 the original author or authors. */ package ch18io.file; /** * Description of this file. * * @author XiongNeng * @version 1.0 * @since 13-3-29 */ import java.io.*; public class FileToHex { public static void convertToHex(PrintStream out, File file) throws IOException { InputStream is = new FileInputStream(file); int bytesCounter = 0; int value = 0; StringBuilder sbHex = new StringBuilder(); StringBuilder sbText = new StringBuilder(); StringBuilder sbResult = new StringBuilder(); while ((value = is.read()) != -1) { //convert to hex value with "X" formatter sbHex.append(String.format("%02X ", value)); //If the chracater is not convertable, just print a dot symbol "." if (!Character.isISOControl(value)) { sbText.append((char) value); } else { sbText.append("."); } //if 16 bytes are read, reset the counter, //clear the StringBuilder for formatting purpose only. if (bytesCounter == 15) { sbResult.append(sbHex).append(" ").append(sbText).append("\n"); sbHex.setLength(0); sbText.setLength(0); bytesCounter = 0; } else { bytesCounter++; } } //if still got content if (bytesCounter != 0) { //add spaces more formatting purpose only for (; bytesCounter < 16; bytesCounter++) { //1 character 3 spaces sbHex.append(" "); } sbResult.append(sbHex).append(" ").append(sbText).append("\n"); } out.print(sbResult); is.close(); } public static void main(String[] args) throws IOException { //display output to console convertToHex(System.out, new File("c:/file.txt")); //write the output into a file convertToHex(new PrintStream("c:/file.hex"), new File("c:/file.txt")); } }