// ----------------------------------------------------------------------------- // ReadFileIntoByteArray.java // ----------------------------------------------------------------------------- /* * ============================================================================= * Copyright (c) 1998-2008 Jeffrey M. Hunter. All rights reserved. * * All source code and material located at the Internet address of * http://www.idevelopment.info is the copyright of Jeffrey M. Hunter and * is protected under copyright laws of the United States. This source code may * not be hosted on any other site without my express, prior, written * permission. Application to host any of the material elsewhere can be made by * contacting me at jhunter@idevelopment.info. * * I have made every effort and taken great care in making sure that the source * code and other content included on my web site is technically accurate, but I * disclaim any and all responsibility for any loss, damage or destruction of * data or any other property which may arise from relying on it. I will in no * case be liable for any monetary damages arising from such loss, damage or * destruction. * * As with any code, ensure to test this code in a development environment * before attempting to run it in production. * ============================================================================= */ import java.io.File; import java.io.InputStream; import java.io.FileInputStream; import java.io.IOException; /** * ----------------------------------------------------------------------------- * This program demonstrates how to read a file into a byte array. This method * reads the entire contents of the file into a byte array. * * @version 1.0 * @author Jeffrey M. Hunter (jhunter@idevelopment.info) * @author http://www.idevelopment.info * ----------------------------------------------------------------------------- */ public class ReadFileIntoByteArray { /** * method to convert a byte to a hex string. * * @param data the byte to convert * @return String the converted byte */ public static String byteToHex(byte data) { StringBuffer buf = new StringBuffer(); buf.append(toHexChar((data >>> 4) & 0x0F)); buf.append(toHexChar(data & 0x0F)); return buf.toString(); } /** * Convenience method to convert an int to a hex char. * * @param i the int to convert * @return char the converted char */ public static char toHexChar(int i) { if ((0 <= i) && (i <= 9)) { return (char) ('0' + i); } else { return (char) ('a' + (i - 10)); } } /** * Returns the contents of the file in a byte array * @param file File this method should read * @return byte[] Returns a byte[] array of the contents of the file */ private static byte[] getBytesFromFile(File file) throws IOException { InputStream is = new FileInputStream(file); System.out.println("\nDEBUG: FileInputStream is " + file); // Get the size of the file long length = file.length(); System.out.println("DEBUG: Length of " + file + " is " + length + "\n"); /* * You cannot create an array using a long type. It needs to be an int * type. Before converting to an int type, check to ensure that file is * not loarger than Integer.MAX_VALUE; */ if (length > Integer.MAX_VALUE) { System.out.println("File is too large to process"); return null; } // Create the byte array to hold the data byte[] bytes = new byte[(int)length]; // Read in the bytes int offset = 0; int numRead = 0; while ( (offset < bytes.length) && ( (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) ) { offset += numRead; } // Ensure all the bytes have been read in if (offset < bytes.length) { throw new IOException("Could not completely read file " + file.getName()); } is.close(); return bytes; } /** * Sole entry point to the class and application. * @param args Array of String arguments. */ public static void main(String[] args) { byte[] fileArray = null; try { fileArray = getBytesFromFile(new File("README_InputFile.txt")); } catch (IOException e) { e.printStackTrace(); } if (fileArray != null) { for (int i=0; i 9 && (int)fileArray[i] <= 99) ? " " : "") + fileArray[i] + " : " + " HEX=(0x" + byteToHex(fileArray[i]) + ") : " + " charValue=(" + (char)fileArray[i] + ")"); } } } }