这两天在学习NIO的部分,开始觉得NIO比传统IO实现文件的读写要稍微复杂一些,但是写多了之后还是觉得NIO还是比较容易理解的,新东西不能害怕去看,硬着头皮看下去总有理解的时候,下面是代码。
这是测试读取数据的方法
public void testRead(){
RandomAccessFile afile=null;//这里也可以用inputStream
try {
afile=new RandomAccessFile("test.txt", "rw");
FileChannel fileChannel=afile.getChannel();
ByteBuffer buf=ByteBuffer.allocate(1024);
int bytersead=fileChannel.read(buf);
while (bytersead!=-1){
buf.flip();
while(buf.hasRemaining()){
System.out.println((char)buf.get());
}
buf.compact();
bytersead=fileChannel.read(buf);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这是测试写的方法
public void testWrite(){
try {
FileChannel fileChannel=new FileInputStream(new File("test.txt")).getChannel();
ByteBuffer byteBuffer=ByteBuffer.allocate(1024);
int readByte=fileChannel.read(byteBuffer);
while(readByte!=-1){
byteBuffer.flip();
while(byteBuffer.hasRemaining()){
System.out.println((char)byteBuffer.get());
}
byteBuffer.compact();
readByte=fileChannel.read(byteBuffer);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}