Java by API/java.nio/ByteBuffer

Материал из Java эксперт
Перейти к: навигация, поиск

ByteBuffer: allocateDirect(int size)

   <source lang="java">
  

import java.io.FileOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class MainClass {

 public static void main(String args[]) {
   FileOutputStream fileOutputStream;
   FileChannel fileChannel;
   ByteBuffer byteBuffer;
   try {
     fileOutputStream = new FileOutputStream("test.txt");
     fileChannel = fileOutputStream.getChannel();
     byteBuffer = ByteBuffer.allocateDirect(26);
     for (int i = 0; i < 26; i++)
       byteBuffer.put((byte) ("A" + i));
     byteBuffer.rewind();
     fileChannel.write(byteBuffer);
     fileChannel.close();
     fileOutputStream.close();
   } catch (IOException exc) {
     System.out.println(exc);
   }
 }

}



 </source>
   
  
 
  



ByteBuffer: allocate(int capacity)

   <source lang="java">
  

import java.io.FileInputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class MainClass {

 public static void main(String args[]) {
   FileInputStream fIn;
   FileChannel fChan;
   long fSize;
   ByteBuffer mBuf;
   try {
     fIn = new FileInputStream("test.txt");
     fChan = fIn.getChannel();
     fSize = fChan.size();
     mBuf = ByteBuffer.allocate((int) fSize);
     fChan.read(mBuf);
     mBuf.rewind();
     for (int i = 0; i < fSize; i++)
       System.out.print((char) mBuf.get());
     fChan.close();
     fIn.close();
   } catch (IOException exc) {
     System.out.println(exc);
   }
 }

}



 </source>
   
  
 
  



ByteBuffer: asCharBuffer()

   <source lang="java">
  

import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.CharBuffer; public class MainClass {

 public static void main(String[] args) {
   File aFile = new File("afile.txt");
   FileOutputStream outputFile = null;
   try {
     outputFile = new FileOutputStream(aFile, true);
     System.out.println("File stream created successfully.");
   } catch (FileNotFoundException e) {
     e.printStackTrace(System.err);
   }
   ByteBuffer buf = ByteBuffer.allocate(1024);
   System.out.println("\nByte buffer:");
   System.out.printf("position = %2d  Limit = %4d  capacity = %4d%n", buf.position(), buf.limit(),
       buf.capacity());
   // Create a view buffer
   CharBuffer charBuf = buf.asCharBuffer();
   System.out.println("Char view buffer:");
   System.out.printf("position = %2d  Limit = %4d  capacity = %4d%n", charBuf.position(), charBuf
       .limit(), charBuf.capacity());
   try {
     outputFile.close(); // Close the O/P stream & the channel
   } catch (IOException e) {
     e.printStackTrace(System.err);
   }
 }

}



 </source>
   
  
 
  



ByteBuffer: asDoubleBuffer()

   <source lang="java">
 

import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.DoubleBuffer; import java.nio.FloatBuffer; import java.nio.IntBuffer; import java.nio.LongBuffer; import java.nio.ShortBuffer; public class Main {

 public static void main(String[] args) {
   ByteBuffer bb = ByteBuffer.wrap(new byte[] { 0, 0, 0, 0, 0, 0, 0, "a" });
   bb.rewind();
   System.out.println("Byte Buffer");
   while (bb.hasRemaining())
     System.out.println(bb.position() + " -> " + bb.get());
   CharBuffer cb = ((ByteBuffer) bb.rewind()).asCharBuffer();
   System.out.println("Char Buffer");
   while (cb.hasRemaining())
     System.out.println(cb.position() + " -> " + cb.get());
   FloatBuffer fb = ((ByteBuffer) bb.rewind()).asFloatBuffer();
   System.out.println("Float Buffer");
   while (fb.hasRemaining())
     System.out.println(fb.position() + " -> " + fb.get());
   IntBuffer ib = ((ByteBuffer) bb.rewind()).asIntBuffer();
   System.out.println("Int Buffer");
   while (ib.hasRemaining())
     System.out.println(ib.position() + " -> " + ib.get());
   LongBuffer lb = ((ByteBuffer) bb.rewind()).asLongBuffer();
   System.out.println("Long Buffer");
   while (lb.hasRemaining())
     System.out.println(lb.position() + " -> " + lb.get());
   ShortBuffer sb = ((ByteBuffer) bb.rewind()).asShortBuffer();
   System.out.println("Short Buffer");
   while (sb.hasRemaining())
     System.out.println(sb.position() + " -> " + sb.get());
   DoubleBuffer db = ((ByteBuffer) bb.rewind()).asDoubleBuffer();
   System.out.println("Double Buffer");
   while (db.hasRemaining())
     System.out.println(db.position() + " -> " + db.get());
 }

}


 </source>
   
  
 
  



ByteBuffer: asFloatBuffer()

   <source lang="java">
 

import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.DoubleBuffer; import java.nio.FloatBuffer; import java.nio.IntBuffer; import java.nio.LongBuffer; import java.nio.ShortBuffer; public class Main {

 public static void main(String[] args) {
   ByteBuffer bb = ByteBuffer.wrap(new byte[] { 0, 0, 0, 0, 0, 0, 0, "a" });
   bb.rewind();
   System.out.println("Byte Buffer");
   while (bb.hasRemaining())
     System.out.println(bb.position() + " -> " + bb.get());
   CharBuffer cb = ((ByteBuffer) bb.rewind()).asCharBuffer();
   System.out.println("Char Buffer");
   while (cb.hasRemaining())
     System.out.println(cb.position() + " -> " + cb.get());
   FloatBuffer fb = ((ByteBuffer) bb.rewind()).asFloatBuffer();
   System.out.println("Float Buffer");
   while (fb.hasRemaining())
     System.out.println(fb.position() + " -> " + fb.get());
   IntBuffer ib = ((ByteBuffer) bb.rewind()).asIntBuffer();
   System.out.println("Int Buffer");
   while (ib.hasRemaining())
     System.out.println(ib.position() + " -> " + ib.get());
   LongBuffer lb = ((ByteBuffer) bb.rewind()).asLongBuffer();
   System.out.println("Long Buffer");
   while (lb.hasRemaining())
     System.out.println(lb.position() + " -> " + lb.get());
   ShortBuffer sb = ((ByteBuffer) bb.rewind()).asShortBuffer();
   System.out.println("Short Buffer");
   while (sb.hasRemaining())
     System.out.println(sb.position() + " -> " + sb.get());
   DoubleBuffer db = ((ByteBuffer) bb.rewind()).asDoubleBuffer();
   System.out.println("Double Buffer");
   while (db.hasRemaining())
     System.out.println(db.position() + " -> " + db.get());
 }

}


 </source>
   
  
 
  



ByteBuffer: asLongBuffer()

   <source lang="java">
  

import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.FileNotFoundException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class MainClass {

 public static void main(String[] args) {
   File aFile = new File("file.dat");
   FileInputStream inFile = null;
   try {
     inFile = new FileInputStream(aFile);
   } catch (FileNotFoundException e) {
     e.printStackTrace(System.err);
     System.exit(0);
   }
   FileChannel inChannel = inFile.getChannel();
   final int COUNT = 6;
   ByteBuffer buf = ByteBuffer.allocate(8 * COUNT);
   long[] data = new long[COUNT];
   try {
     while (inChannel.read(buf) != -1) {
       ((ByteBuffer) (buf.flip())).asLongBuffer().get(data);
       System.out.println();
       for (long prime : data)
         System.out.printf("%10d", prime);
       buf.clear();
     }
     System.out.println("\nEOF reached.");
     inFile.close();
   } catch (IOException e) {
     e.printStackTrace(System.err);
     System.exit(1);
   }
 }

}



 </source>
   
  
 
  



ByteBuffer: asShortBuffer()

   <source lang="java">
 

import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.DoubleBuffer; import java.nio.FloatBuffer; import java.nio.IntBuffer; import java.nio.LongBuffer; import java.nio.ShortBuffer; public class Main {

 public static void main(String[] args) {
   ByteBuffer bb = ByteBuffer.wrap(new byte[] { 0, 0, 0, 0, 0, 0, 0, "a" });
   bb.rewind();
   System.out.println("Byte Buffer");
   while (bb.hasRemaining())
     System.out.println(bb.position() + " -> " + bb.get());
   CharBuffer cb = ((ByteBuffer) bb.rewind()).asCharBuffer();
   System.out.println("Char Buffer");
   while (cb.hasRemaining())
     System.out.println(cb.position() + " -> " + cb.get());
   FloatBuffer fb = ((ByteBuffer) bb.rewind()).asFloatBuffer();
   System.out.println("Float Buffer");
   while (fb.hasRemaining())
     System.out.println(fb.position() + " -> " + fb.get());
   IntBuffer ib = ((ByteBuffer) bb.rewind()).asIntBuffer();
   System.out.println("Int Buffer");
   while (ib.hasRemaining())
     System.out.println(ib.position() + " -> " + ib.get());
   LongBuffer lb = ((ByteBuffer) bb.rewind()).asLongBuffer();
   System.out.println("Long Buffer");
   while (lb.hasRemaining())
     System.out.println(lb.position() + " -> " + lb.get());
   ShortBuffer sb = ((ByteBuffer) bb.rewind()).asShortBuffer();
   System.out.println("Short Buffer");
   while (sb.hasRemaining())
     System.out.println(sb.position() + " -> " + sb.get());
   DoubleBuffer db = ((ByteBuffer) bb.rewind()).asDoubleBuffer();
   System.out.println("Double Buffer");
   while (db.hasRemaining())
     System.out.println(db.position() + " -> " + db.get());
 }

}


 </source>
   
  
 
  



ByteBuffer: capacity()

   <source lang="java">
  

/*

* Output:

File stream created successfully. New buffer: position = 0 Limit = 1024 capacity = 1024 Buffer after loading: position = 30 Limit = 1024 capacity = 1024 Buffer after flip: position = 0 Limit = 30 capacity = 1024 Buffer contents written to file.

*/

import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.FileNotFoundException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class MainClass {

 public static void main(String[] args) {
   String phrase = new String("www.jexp.ru\n");
   File aFile = new File("test.txt");   
   FileOutputStream outputFile = null;  
   try {
     outputFile = new FileOutputStream(aFile, true);
     System.out.println("File stream created successfully.");
   } catch (FileNotFoundException e) {
     e.printStackTrace(System.err);
   } 
   FileChannel outChannel = outputFile.getChannel();
   
   ByteBuffer buf = ByteBuffer.allocate(1024);
   System.out.println("New buffer:           position = " + buf.position()
                      + "\tLimit = " + buf.limit() + "\tcapacity = "
                      + buf.capacity());
   // Load the data into the buffer
   for (char ch : phrase.toCharArray()) {
     buf.putChar(ch);
   }
   System.out.println("Buffer after loading: position = " + buf.position()
                      + "\tLimit = " + buf.limit() + "\tcapacity = "
                      + buf.capacity());
   buf.flip();
   System.out.println("Buffer after flip:    position = " + buf.position() 
                      + "\tLimit = " + buf.limit() + "\tcapacity = " 
                      + buf.capacity());
   try {
     outChannel.write(buf);
     outputFile.close();
     System.out.println("Buffer contents written to file.");
   } catch (IOException e) {
     e.printStackTrace(System.err);
   }
 }

}



 </source>
   
  
 
  



ByteBuffer: clear()

   <source lang="java">
  

import java.io.FileInputStream; import java.io.FileOutputStream; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class MainClass {

 public static void main(String[] args) throws Exception {
   String fromFileName = args[0];
   String toFileName = args[1];
   FileChannel in = new FileInputStream(fromFileName).getChannel();
   FileChannel out = new FileOutputStream(toFileName).getChannel();
   ByteBuffer buff = ByteBuffer.allocate(32 * 1024);
   while (in.read(buff) > 0) {
     buff.flip();
     out.write(buff);
     buff.clear();
   }
   in.close();
   out.close();
 }

}



 </source>
   
  
 
  



ByteBuffer: compact()

   <source lang="java">
  

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.rupact()) == -1) {
         break;
       }
       buf.flip();
     }
     int strLength = (int) buf.getDouble();
     if (buf.remaining() < 2 * strLength) {
       if (inChannel.read(buf.rupact()) == -1) {
         break;
       }
       buf.flip();
     }
     byte[] strChars = new byte[2 * strLength];
     buf.get(strChars);
     if (buf.remaining() < 8) {
       if (inChannel.read(buf.rupact()) == -1) {
         break;
       }
       buf.flip();
     }
     System.out.println(strLength);
     System.out.println(ByteBuffer.wrap(strChars).asCharBuffer());
     System.out.println(buf.getLong());
   }
   inFile.close();  }

}


 </source>
   
  
 
  



ByteBuffer: flip()

   <source lang="java">
  

import java.io.FileInputStream; import java.io.FileOutputStream; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class MainClass {

 public static void main(String[] args) throws Exception {
   String fromFileName = args[0];
   String toFileName = args[1];
   FileChannel in = new FileInputStream(fromFileName).getChannel();
   FileChannel out = new FileOutputStream(toFileName).getChannel();
   ByteBuffer buff = ByteBuffer.allocate(32 * 1024);
   while (in.read(buff) > 0) {
     buff.flip();
     out.write(buff);
     buff.clear();
   }
   in.close();
   out.close();
 }

}



 </source>
   
  
 
  



ByteBuffer: get()

   <source lang="java">
  

import java.io.FileInputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class MainClass {

 public static void main(String args[]) {
   FileInputStream fIn;
   FileChannel fChan;
   long fSize;
   ByteBuffer mBuf;
   try {
     fIn = new FileInputStream("test.txt");
     fChan = fIn.getChannel();
     fSize = fChan.size();
     mBuf = ByteBuffer.allocate((int) fSize);
     fChan.read(mBuf);
     mBuf.rewind();
     for (int i = 0; i < fSize; i++)
       System.out.print((char) mBuf.get());
     fChan.close();
     fIn.close();
   } catch (IOException exc) {
     System.out.println(exc);
   }
 }

}



 </source>
   
  
 
  



ByteBuffer: get(byte[] dst, int offset, int length)

   <source lang="java">

import java.nio.ByteBuffer; public class Main {

 public static void main(String[] argv) throws Exception {
   byte[] bytes = new byte[10];
   ByteBuffer buf = ByteBuffer.wrap(bytes);
   buf.clear();
   bytes = new byte[buf.capacity()];
   buf.get(bytes, 0, bytes.length);
 }

}

 </source>
   
  
 
  



ByteBuffer: getChar()

   <source lang="java">
 

import java.nio.ByteBuffer; public class Main {

 private static final int BSIZE = 1024;
 public static void main(String[] args) {
   ByteBuffer bb = ByteBuffer.allocate(BSIZE);
   bb.asCharBuffer().put("Howdy!");
   char c;
   while ((c = bb.getChar()) != 0)
     System.out.print(c + " ");
   System.out.println();
 }

}


 </source>
   
  
 
  



ByteBuffer: getDouble()

   <source lang="java">
  

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.rupact()) == -1) {
         break;
       }
       buf.flip();
     }
     int strLength = (int) buf.getDouble();
     if (buf.remaining() < 2 * strLength) {
       if (inChannel.read(buf.rupact()) == -1) {
         break;
       }
       buf.flip();
     }
     byte[] strChars = new byte[2 * strLength];
     buf.get(strChars);
     if (buf.remaining() < 8) {
       if (inChannel.read(buf.rupact()) == -1) {
         break;
       }
       buf.flip();
     }
     System.out.println(strLength);
     System.out.println(ByteBuffer.wrap(strChars).asCharBuffer());
     System.out.println(buf.getLong());
   }
   inFile.close();  }

}


 </source>
   
  
 
  



ByteBuffer: getFloat()

   <source lang="java">

import java.nio.ByteBuffer; public class Main {

 public static void main(String[] argv) throws Exception {
   ByteBuffer buf = ByteBuffer.allocate(100);
   // Put values of different types
   buf.putFloat(12.3F);
   // Reset position for reading
   buf.flip();
   // Retrieve the values
   float f = buf.getFloat();
 }

}

 </source>
   
  
 
  



ByteBuffer: getInt()

   <source lang="java">

import java.nio.ByteBuffer; public class Main {

 public static void main(String[] argv) throws Exception {
   ByteBuffer buf = ByteBuffer.allocate(100);
   // Put values of different types
   buf.putInt(123);
   // Reset position for reading
   buf.flip();
   // Retrieve the values
   int i = buf.getInt();
 }

}

 </source>
   
  
 
  



ByteBuffer: get(int index)

   <source lang="java">

import java.nio.ByteBuffer; public class Main {

 public static void main(String[] argv) throws Exception {
   ByteBuffer buf = ByteBuffer.allocateDirect(10);
   byte b = buf.get(5); // position=0
 }

}

 </source>
   
  
 
  



ByteBuffer: getLong()

   <source lang="java">

import java.nio.ByteBuffer; public class Main {

 public static void main(String[] argv) throws Exception {
   ByteBuffer buf = ByteBuffer.allocate(100);
   // Put values of different types
   buf.putLong(123L);
   // Reset position for reading
   buf.flip();
   // Retrieve the values
   long l = buf.getLong();
 }

}

 </source>
   
  
 
  



ByteBuffer: isDirect()

   <source lang="java">

//Contents in a non-direct ByteBuffer are stored in the normal memory. //Contents in a direct ByteBuffer are stored in some I/O device. import java.nio.ByteBuffer; public class Main {

 public static void main(String[] argv) throws Exception {
   ByteBuffer bbuf = ByteBuffer.wrap(new byte[10]);
   boolean isDirect = bbuf.isDirect(); // false
   bbuf = ByteBuffer.allocate(10);
   isDirect = bbuf.isDirect(); // false
   bbuf = ByteBuffer.allocateDirect(10);
   isDirect = bbuf.isDirect(); // true
 }

}

 </source>
   
  
 
  



ByteBuffer: limit()

   <source lang="java">
  

/*

* Output:

File stream created successfully. New buffer: position = 0 Limit = 1024 capacity = 1024 Buffer after loading: position = 30 Limit = 1024 capacity = 1024 Buffer after flip: position = 0 Limit = 30 capacity = 1024 Buffer contents written to file.

*/

import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.FileNotFoundException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class MainClass {

 public static void main(String[] args) {
   String phrase = new String("www.jexp.ru\n");
   File aFile = new File("test.txt");   
   FileOutputStream outputFile = null;  
   try {
     outputFile = new FileOutputStream(aFile, true);
     System.out.println("File stream created successfully.");
   } catch (FileNotFoundException e) {
     e.printStackTrace(System.err);
   } 
   FileChannel outChannel = outputFile.getChannel();
   
   ByteBuffer buf = ByteBuffer.allocate(1024);
   System.out.println("New buffer:           position = " + buf.position()
                      + "\tLimit = " + buf.limit() + "\tcapacity = "
                      + buf.capacity());
   // Load the data into the buffer
   for (char ch : phrase.toCharArray()) {
     buf.putChar(ch);
   }
   System.out.println("Buffer after loading: position = " + buf.position()
                      + "\tLimit = " + buf.limit() + "\tcapacity = "
                      + buf.capacity());
   buf.flip();
   System.out.println("Buffer after flip:    position = " + buf.position() 
                      + "\tLimit = " + buf.limit() + "\tcapacity = " 
                      + buf.capacity());
   try {
     outChannel.write(buf);
     outputFile.close();
     System.out.println("Buffer contents written to file.");
   } catch (IOException e) {
     e.printStackTrace(System.err);
   }
 }

}



 </source>
   
  
 
  



ByteBuffer: order()

   <source lang="java">

import java.nio.ByteBuffer; import java.nio.ByteOrder; public class Main {

 public static void main(String[] argv) throws Exception {
   ByteBuffer buf = ByteBuffer.allocate(10);
   
   ByteOrder order = buf.order(); // ByteOrder.BIG_ENDIAN
 }

}

 </source>
   
  
 
  



ByteBuffer: order(ByteOrder bo)

   <source lang="java">

import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.CharBuffer; /**

* Test asCharBuffer view.
*/

public class Main {

 public static void main(String[] argv) throws Exception {
   ByteBuffer byteBuffer = ByteBuffer.allocate(7).order(ByteOrder.BIG_ENDIAN);
   CharBuffer charBuffer = byteBuffer.asCharBuffer();
   byteBuffer.put(0, (byte) 0);
   byteBuffer.put(1, (byte) "H");
   byteBuffer.put(2, (byte) 0);
   byteBuffer.put(3, (byte) "i");
   byteBuffer.put(4, (byte) 0);
   byteBuffer.put(5, (byte) "!");
   byteBuffer.put(6, (byte) 0);
   println(byteBuffer);
   println(charBuffer);
   // now slice it differently
   byteBuffer.position(4);
   charBuffer = byteBuffer.asCharBuffer();
   println(byteBuffer);
   println(charBuffer);
 }
 // Print info about a buffer
 private static void println(Buffer buffer) {
   System.out.println("pos=" + buffer.position() + ", limit=" + buffer.limit() + ", capacity="
       + buffer.capacity() + ": "" + buffer.toString() + """);
 }

}

 </source>
   
  
 
  



ByteBuffer: position()

   <source lang="java">
  

/*

* Output:

File stream created successfully. New buffer: position = 0 Limit = 1024 capacity = 1024 Buffer after loading: position = 30 Limit = 1024 capacity = 1024 Buffer after flip: position = 0 Limit = 30 capacity = 1024 Buffer contents written to file.

*/

import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.FileNotFoundException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class MainClass {

 public static void main(String[] args) {
   String phrase = new String("www.jexp.ru\n");
   File aFile = new File("test.txt");   
   FileOutputStream outputFile = null;  
   try {
     outputFile = new FileOutputStream(aFile, true);
     System.out.println("File stream created successfully.");
   } catch (FileNotFoundException e) {
     e.printStackTrace(System.err);
   } 
   FileChannel outChannel = outputFile.getChannel();
   
   ByteBuffer buf = ByteBuffer.allocate(1024);
   System.out.println("New buffer:           position = " + buf.position()
                      + "\tLimit = " + buf.limit() + "\tcapacity = "
                      + buf.capacity());
   // Load the data into the buffer
   for (char ch : phrase.toCharArray()) {
     buf.putChar(ch);
   }
   System.out.println("Buffer after loading: position = " + buf.position()
                      + "\tLimit = " + buf.limit() + "\tcapacity = "
                      + buf.capacity());
   buf.flip();
   System.out.println("Buffer after flip:    position = " + buf.position() 
                      + "\tLimit = " + buf.limit() + "\tcapacity = " 
                      + buf.capacity());
   try {
     outChannel.write(buf);
     outputFile.close();
     System.out.println("Buffer contents written to file.");
   } catch (IOException e) {
     e.printStackTrace(System.err);
   }
 }

}



 </source>
   
  
 
  



ByteBuffer: position(int newPosition)

   <source lang="java">

import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.CharBuffer; /**

* Test asCharBuffer view.
*/

public class Main {

 public static void main(String[] argv) throws Exception {
   ByteBuffer byteBuffer = ByteBuffer.allocate(7).order(ByteOrder.BIG_ENDIAN);
   CharBuffer charBuffer = byteBuffer.asCharBuffer();
   byteBuffer.put(0, (byte) 0);
   byteBuffer.put(1, (byte) "H");
   byteBuffer.put(2, (byte) 0);
   byteBuffer.put(3, (byte) "i");
   byteBuffer.put(4, (byte) 0);
   byteBuffer.put(5, (byte) "!");
   byteBuffer.put(6, (byte) 0);
   println(byteBuffer);
   println(charBuffer);
   // now slice it differently
   byteBuffer.position(4);
   charBuffer = byteBuffer.asCharBuffer();
   println(byteBuffer);
   println(charBuffer);
 }
 // Print info about a buffer
 private static void println(Buffer buffer) {
   System.out.println("pos=" + buffer.position() + ", limit=" + buffer.limit() + ", capacity="
       + buffer.capacity() + ": "" + buffer.toString() + """);
 }

}

 </source>
   
  
 
  



ByteBuffer: put(byte b)

   <source lang="java">
  

import java.io.FileOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class MainClass {

 public static void main(String args[]) {
   FileOutputStream fileOutputStream;
   FileChannel fileChannel;
   ByteBuffer byteBuffer;
   try {
     fileOutputStream = new FileOutputStream("test.txt");
     fileChannel = fileOutputStream.getChannel();
     byteBuffer = ByteBuffer.allocateDirect(26);
     for (int i = 0; i < 26; i++)
       byteBuffer.put((byte) ("A" + i));
     byteBuffer.rewind();
     fileChannel.write(byteBuffer);
     fileChannel.close();
     fileOutputStream.close();
   } catch (IOException exc) {
     System.out.println(exc);
   }
 }

}



 </source>
   
  
 
  



ByteBuffer: putChar(char ch)

   <source lang="java">
  

/*

* Output:

File stream created successfully. New buffer: position = 0 Limit = 1024 capacity = 1024 Buffer after loading: position = 30 Limit = 1024 capacity = 1024 Buffer after flip: position = 0 Limit = 30 capacity = 1024 Buffer contents written to file.

*/

import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.FileNotFoundException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class MainClass {

 public static void main(String[] args) {
   String phrase = new String("www.jexp.ru\n");
   File aFile = new File("test.txt");   
   FileOutputStream outputFile = null;  
   try {
     outputFile = new FileOutputStream(aFile, true);
     System.out.println("File stream created successfully.");
   } catch (FileNotFoundException e) {
     e.printStackTrace(System.err);
   } 
   FileChannel outChannel = outputFile.getChannel();
   
   ByteBuffer buf = ByteBuffer.allocate(1024);
   System.out.println("New buffer:           position = " + buf.position()
                      + "\tLimit = " + buf.limit() + "\tcapacity = "
                      + buf.capacity());
   // Load the data into the buffer
   for (char ch : phrase.toCharArray()) {
     buf.putChar(ch);
   }
   System.out.println("Buffer after loading: position = " + buf.position()
                      + "\tLimit = " + buf.limit() + "\tcapacity = "
                      + buf.capacity());
   buf.flip();
   System.out.println("Buffer after flip:    position = " + buf.position() 
                      + "\tLimit = " + buf.limit() + "\tcapacity = " 
                      + buf.capacity());
   try {
     outChannel.write(buf);
     outputFile.close();
     System.out.println("Buffer contents written to file.");
   } catch (IOException e) {
     e.printStackTrace(System.err);
   }
 }

}



 </source>
   
  
 
  



ByteBuffer: putDouble(double value)

   <source lang="java">

import java.nio.ByteBuffer; public class Main {

 public static void main(String[] argv) throws Exception {
   ByteBuffer buf = ByteBuffer.allocate(100);
   // Put values of different types
   buf.putDouble(12.3D);
   // Reset position for reading
   buf.flip();
   // Retrieve the values
   double d = buf.getDouble();
 }

}

 </source>
   
  
 
  



ByteBuffer: putFloat(float value)

   <source lang="java">

import java.nio.ByteBuffer; public class Main {

 public static void main(String[] argv) throws Exception {
   ByteBuffer buf = ByteBuffer.allocate(100);
   // Put values of different types
   buf.putFloat(12.3F);
   // Reset position for reading
   buf.flip();
   // Retrieve the values
   float f = buf.getFloat();
 }

}

 </source>
   
  
 
  



ByteBuffer: putInt(int i)

   <source lang="java">
  

/*

* Output:

*/

import java.io.File; import java.io.FileOutputStream; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class MainClass {

 public static void main(String[] args) {
   try {
     File aFile = new File("test.txt");
     FileOutputStream outputFile = null;
     outputFile = new FileOutputStream(aFile, true);
     FileChannel outChannel = outputFile.getChannel();
     ByteBuffer buf = ByteBuffer.allocate(200);
     buf.putInt(10).asCharBuffer().put("www.jexp.ru");
     buf.position(10).flip();
     outChannel.write(buf);
     buf.clear();
     outputFile.close();
   } catch (Exception e) {
     e.printStackTrace();
   }
 }

}



 </source>
   
  
 
  



ByteBuffer: putLong(long value)

   <source lang="java">

import java.nio.ByteBuffer; public class Main {

 public static void main(String[] argv) throws Exception {
   ByteBuffer buf = ByteBuffer.allocate(100);
   // Put values of different types
   buf.putLong(123L);
   // Reset position for reading
   buf.flip();
   // Retrieve the values
   long l = buf.getLong();
 }

}

 </source>
   
  
 
  



ByteBuffer: putShort(int index, short value)

   <source lang="java">

import java.nio.ByteBuffer; public class Main {

 public static void main(String[] argv) throws Exception {
   ByteBuffer buf = ByteBuffer.allocate(10);
   buf.putShort(0, (short) 123);
   buf.get(0); // 0
   buf.get(1); // 123
 }

}

 </source>
   
  
 
  



ByteBuffer: putShort(short value)

   <source lang="java">

import java.nio.ByteBuffer; public class Main {

 public static void main(String[] argv) throws Exception {
   ByteBuffer buf = ByteBuffer.allocate(100);
   buf.putShort((short) 123);
   // Reset position for reading
   buf.flip();
   // Retrieve the values
   short s = buf.getShort();
 }

}

 </source>
   
  
 
  



ByteBuffer: rewind()

   <source lang="java">
  

import java.io.FileInputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class MainClass {

 public static void main(String args[]) {
   FileInputStream fIn;
   FileChannel fChan;
   long fSize;
   ByteBuffer mBuf;
   try {
     fIn = new FileInputStream("test.txt");
     fChan = fIn.getChannel();
     fSize = fChan.size();
     mBuf = ByteBuffer.allocate((int) fSize);
     fChan.read(mBuf);
     mBuf.rewind();
     for (int i = 0; i < fSize; i++)
       System.out.print((char) mBuf.get());
     fChan.close();
     fIn.close();
   } catch (IOException exc) {
     System.out.println(exc);
   }
 }

}



 </source>
   
  
 
  



ByteBuffer: wrap(byte[] array)

   <source lang="java">
  

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.rupact()) == -1) {
         break;
       }
       buf.flip();
     }
     int strLength = (int) buf.getDouble();
     if (buf.remaining() < 2 * strLength) {
       if (inChannel.read(buf.rupact()) == -1) {
         break;
       }
       buf.flip();
     }
     byte[] strChars = new byte[2 * strLength];
     buf.get(strChars);
     if (buf.remaining() < 8) {
       if (inChannel.read(buf.rupact()) == -1) {
         break;
       }
       buf.flip();
     }
     System.out.println(strLength);
     System.out.println(ByteBuffer.wrap(strChars).asCharBuffer());
     System.out.println(buf.getLong());
   }
   inFile.close();  }

}


 </source>