我正在寻找一种“好”方式来确定RandomAccessFile是否为只读
非“好”的方式包括:
我尝试编写一个空字节数组,但无论RandomAccessFile是以只读还是读写模式构造,调用都会成功。
到目前为止我发现的一种可行的方法是获得FileChannel,然后尝试创建一个读写映射。
RandomAccessFile raf = new RandomAccessFile("someFile.txt", "r");
raf.getChannel().map(MapMode.READ_WRITE, 0, 0);
在此示例中,映射尝试抛出NonWritableChannelException,然后可以捕获该异常并用于指示RandomAccessFile是只读的。
但是,我对上述方法有一些顾虑。
答案 0 :(得分:0)
获取FileChannel
并尝试创建锁定。如果RAF是只读的,它将失败。为什么是另一个问题。
但我同意@Andreas。这是一个你不应该问的问题。您的应用程序应该能够告诉自己如何打开文件而不需要欺骗。