Mega Code Archive

 
Categories / Java by API / Java Nio
 

ByteBuffer

import java.io.File; import java.io.FileInputStream; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class Main {   public static void main(String[] args) throws Exception{     File aFile = new File("primes.txt");     FileInputStream inFile = new FileInputStream(aFile);     FileChannel inChannel = inFile.getChannel();     ByteBuffer buf = ByteBuffer.allocateDirect(1024);     buf.position(buf.limit());     while (true) {       if (buf.remaining() < 8) {         if (inChannel.read(buf.compact()) == -1) {           break;         }         buf.flip();       }       int strLength = (int) buf.getDouble();       if (buf.remaining() < 2 * strLength) {         if (inChannel.read(buf.compact()) == -1) {           break;         }         buf.flip();       }       byte[] strChars = new byte[2 * strLength];       buf.get(strChars);       if (buf.remaining() < 8) {         if (inChannel.read(buf.compact()) == -1) {           break;         }         buf.flip();       }       System.out.println(strLength);       System.out.println(ByteBuffer.wrap(strChars).asCharBuffer());       System.out.println(buf.getLong());     }     inFile.close();  } }