public static byte [ ] readFully ( File file ) throws IOException { Checks . notNull ( file , "File" ) ; Checks . check ( file . exists ( ) , "Provided file does not exist!" ) ; try ( InputStream is = new FileInputStream ( file ) ) { // Get the size of the file long length = file . length ( ) ; // 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 larger than Integer.MAX_VALUE. if ( length > Integer . MAX_VALUE ) { throw new IOException ( "Cannot read the file into memory completely due to it being too large!" ) ; // File is too large } // 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 ( ) ) ; } // Close the input stream and return bytes is . close ( ) ; return bytes ; } }
Used as an alternate to Java s nio Files . readAllBytes .