我想测试MappedByteBuffer
READ_WRITE 模式。但我得到一个例外:
Exception in thread "main" java.nio.channels.NonWritableChannelException
at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:755)
at test.main(test.java:13)
我不知道必须修复它。提前致谢。
现在我修复了程序,也不例外。但是系统返回的是一个垃圾字符序列,但实际上 in.txt 文件中只有一个字符串“asdfghjkl”。我想可能是编码方案导致了这个问题,但我不知道如何验证和修复它。
import java.io.File;
import java.nio.channels.*;
import java.nio.MappedByteBuffer;
import java.io.RandomAccessFile;
class test{
public static void main(String[] args) throws Exception{
File f= new File("./in.txt");
RandomAccessFile in = new RandomAccessFile(f, "rws");
FileChannel fc = in.getChannel();
MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_WRITE, 0, f.length());
while(mbb.hasRemaining())
System.out.print(mbb.getChar());
fc.close();
in.close();
}
};