通道和FileChannel的使用
原创Java NIO FileChannel
Java NIO FileChannel是连接文件的通道。使用FileChannel,您可以从文件中读取数据和将数据写入文件。Java NIO FileChannel类是NIO用于替代使用标准Java IO API读取文件的方法。
FileChannel
无法设置为非阻塞模式。它总是以阻止模式运行。
开启FileChannel
使用之前,
FileChannel
必须被打开,但是你无法直接打开FileChannel。需要通过InputStream,OutputStream或RandomAccessFile获取FileChannel。
以下是通过RandomAccessFile打开FileChannel的方法:
RandomAccessFile aFile = new RandomAccessFile(“data / nio-data.txt”,“rw”);
FileChannel inChannel = aFile.getChannel();
从FileChannel读取数据
要从
FileChannel
读取数据,您需要调用
read()
方法。
代码展示:
ByteBuffer buf = ByteBuffer.allocate(48);
int bytesRead = inChannel.read(buf);
首先:给
Buffer
分配大小, 从中FileChannel读取的数据会被读入
Buffer
。
其次:调用FileChannel的read()
方法。这个方法从FileChannel读取数据读入到
Buffer
。
read()
方法返回值是
int类型,表示
多少个字节被插入
Buffer
。如果返回-1,则到达文件结尾即文件读取完成。
将数据写入FileChannel
使用
Fwrite()
方法将数据写入ileChannel,该方法使用
Buffer
作为参数。
代码展示:
String newData =“要写入文件的新字符串...”+ System.currentTimeMillis();
ByteBuffer buf = ByteBuffer.allocate(48);
buf.clear();
buf.put(newData.getBytes());
buf.flip();