现象描述
- 每次执行Test程序,程序始终无法结束;IDEA中无法手动停止程序
- 读取的文件一直被占用,无法打开;
- jps查看线程情况,出现两个JUnitStarter,
kill -9
也杀不了;
代码如下
/**
* 使用channel双向读写以及直接字节缓冲区,实现文件读写
*/
@Test
public void rwTest(){
// 获取文件
File file = new File("/Users/mars/Desktop/writer.txt");
try(
// 构建通道
RandomAccessFile raf = new RandomAccessFile(file,"rw");
FileChannel fileChannel = raf.getChannel();
) {
// 使用直接字节缓冲区,将文件映射到虚拟内存,提高IO读写效率
MappedByteBuffer mapBuffer = fileChannel.map(MapMode.READ_WRITE, 0, file.length());
// 设置channel的游标位置,指定从channel的哪里开始写buffer
fileChannel.position(file.length());
// buffer 往channel中写数据
fileChannel.write(mapBuffer);
}catch (Exception e){
}
}
原因及解决方案
尚未解决…