[分享]简单的文件通道和缓冲区应用,为刚学文件的朋友提供帮助。
简单的文件通道和缓冲区应用例子,为刚学文件的朋友提供帮助。import java.io.*;
import java.nio.*;
import java.nio.channels.*;
public class FileChannelTest{
private FileChannel fileChannel; //文件通道
public FileChannelTest()
{
try{
RandomAccessFile file = new RandomAccessFile( "Test","rw" );//随机文件
fileChannel = file.getChannel(); //得到通道
}
catch( IOException e )
{
e.printStackTrace();
}
}
public void writeToFile() throws IOException
{
ByteBuffer buffer = ByteBuffer.allocate( 14 );//字节缓冲区 大小定为 14
buffer.putInt( 100 ); //向缓冲区写 整型
buffer.putChar( 'A' ); //向缓冲区写 字符
buffer.putDouble( 12.34 );//向缓冲区写 双精度
buffer.flip(); //设定极限,并把位置定为0
fileChannel.write( buffer );//把缓冲区写到文件通道中
}
public void readFromFile() throws IOException
{
String content = "";
ByteBuffer buffer = ByteBuffer.allocate( 14 );
fileChannel.position( 0 );//将文件通道位置定为0
fileChannel.read( buffer );//把文件通道数据读到 缓冲区中
buffer.flip();//设定极限,并把位置定为0
content += buffer.getInt() + "," +buffer.getChar() + ","+ //在缓冲区中得到数据
buffer.getDouble();
System.out.println( "File contains: " + content );
fileChannel.close(); //关闭文件通道
}
public static void main( String [] args ) //执行
{
FileChannelTest application = new FileChannelTest();
try{
application.writeToFile();
application.readFromFile();
}
catch( IOException e )
{
e.printStackTrace();
}
}
}