11.4. Reading Binary Data
When you read binary data, you still read bytes from the file, so the process is essentially the same as you used in the previous example. To read a binary file, you create a FileInputStream object and get the FileChannel object from it, and then you read the data into a byte buffer. You could set up a file channel to read the primes.bin file that you created in the previous chapter, like this:
File aFile = new File("C:/Beg Java Stuff/primes.bin"); FileInputStream inFile = null; try { inFile = new FileInputStream(aFile); } catch(FileNotFoundException e) { e.printStackTrace(System.err); System.exit(1); } FileChannel inChannel = inFile.getChannel();
You have some options for the size of the byte buffer. The number of bytes in the buffer should be a multiple of 8 because a prime value is of type long, but other than that you can make it whatever size you like. You could allocate a buffer to accommodate the number of primes that you want to output to the command line—six values, say. This would make accessing the data very easy since you need to set up a view buffer of type LongBuffer only each time you read from the file. One thing against this is that reading such a small amount of data from the file in each read operation would not be a very efficient way to read the file. Before data transfer can start for a read operation, you have significant delay, usually of the order of several milliseconds, waiting for the disk to rotate until the data that you ...
Get Ivor Horton's Beginning Java™ 2, JDK™ 5th Edition 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.