Java Tutorial/File/IntBuffer
Содержание
Convert ByteBuffer to an IntBuffer
<source lang="java">
import java.nio.ByteBuffer; import java.nio.IntBuffer; public class MainClass {
public static void main(String[] args) { ByteBuffer bb = ByteBuffer.wrap(new byte[] { 0, 0, 0, 0, 0, 0, 0, "a" }); bb.rewind(); IntBuffer ib = ((ByteBuffer) bb.rewind()).asIntBuffer(); System.out.println("Int Buffer"); while (ib.hasRemaining()) System.out.println(ib.position() + " -> " + ib.get()); }
} /*
*/</source>
Int Buffer 0 -> 0 1 -> 97
Manipulating ints in a ByteBuffer with an IntBuffer
<source lang="java">
import java.nio.ByteBuffer; import java.nio.IntBuffer; public class MainClass {
private static final int BSIZE = 1024; public static void main(String[] args) { ByteBuffer bb = ByteBuffer.allocate(BSIZE); IntBuffer ib = bb.asIntBuffer(); ib.put(new int[] { 1, 2, 7, 9, 3, 8, 6 }); System.out.println(ib.get(3)); ib.put(3, 1811); ib.rewind(); while (ib.hasRemaining()) { int i = ib.get(); if (i == 0) break; // Else we"ll get the entire buffer System.out.println(i); } }
} /*
- /</source>
9 1 2 7 1811 3 8 6
Map FileChannel to an IntBuffer and read from the IntBuffer
<source lang="java">
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.IntBuffer; import java.nio.channels.FileChannel; public class MainClass {
public static void main(String[] args) throws IOException { FileChannel fc = new FileInputStream(new File("temp.tmp")).getChannel(); IntBuffer ib = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()).asIntBuffer(); while (ib.hasRemaining()) ib.get(); fc.close(); }
}</source>
Put integers to a mapped IntBuffer
<source lang="java">
import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.IntBuffer; import java.nio.channels.FileChannel; public class MainClass {
public static void main(String[] args) throws IOException { FileChannel fc = new RandomAccessFile(new File("temp.tmp"), "rw").getChannel(); IntBuffer ib = fc.map(FileChannel.MapMode.READ_WRITE, 0, fc.size()).asIntBuffer(); ib.put(0); for (int i = 1; i < 10; i++) ib.put(ib.get(i - 1)); fc.close(); }
}</source>
Use while loop to read an IntBuffer
<source lang="java">
import java.nio.ByteBuffer; import java.nio.IntBuffer; public class MainClass {
public static void main(String[] args) { ByteBuffer bb = ByteBuffer.wrap(new byte[] { 0, 0, 0, 0, 0, 0, 0, "a" }); bb.rewind(); IntBuffer ib = ((ByteBuffer) bb.rewind()).asIntBuffer(); System.out.println("Int Buffer"); while (ib.hasRemaining()) System.out.println(ib.position() + " -> " + ib.get()); }
} /*
*/</source>
Int Buffer 0 -> 0 1 -> 97