我正在使用将文件(“ sample.txt”)映射到内存FileChannel.map(),然后使用来关闭通道fc.close()。之后,当我使用FileOutputStream写入文件时,出现以下错误:
java.io.FileNotFoundException:sample.txt(无法在打开用户映射节的文件上执行请求的操作)
File f = new File("sample.txt");
RandomAccessFile raf = new RandomAccessFile(f,"rw");
FileChannel fc = raf.getChannel();
MappedByteBuffer mbf = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
fc.close();
raf.close();
FileOutputStream fos = new FileOutputStream(f);
fos.write(str.getBytes());
fos.close();
我认为这可能是由于即使关闭了文件仍将文件映射到内存FileChannel。我对吗?。如果是这样,如何从内存中“取消映射”文件?(我在API中找不到任何方法)。谢谢。
编辑:看起来它(添加了取消映射方法)已作为RFE提交给sun一段时间:http : //bugs.sun.com/view_bug.do?bug_id=4724038
烙印99
相关分类