我试图保护打开的txt文件不被写入。我找到了方法canRead()和canWrite()但它们在我的代码中没用。关闭文件后,不幸的是已经完成了更改。
这是我的一段代码:
private void filesMethod(String directoryName, String fileExtension, String textFind, String textSet)
{
File file = new File(directoryName);
File[] foundFiles = file.listFiles();
if(foundFiles != null)
{
for(File f : foundFiles)
{
if(f.isFile())
{
if(!f.canRead())
{
continue;
}
...
}
else if(f.isDirectory())
filesMethod(f.getAbsolutePath(), fileExtension, textFind, textSet);
}
}
}
如果文件是打开的,方法canRead()返回TRUE,但我正在搜索一些在这种情况下返回false的方法......
答案 0 :(得分:0)
您可以从文件中删除用户的读取权限,但这会有问题(如果您的程序在还原之前崩溃,您的用户可能会抱怨)。
解决此问题的一种更常见的方法是在打开文件时锁定文件,这样就可以确保在关闭文件之前无法再次打开文件(如果程序崩溃,操作系统会释放锁定你)。
答案 1 :(得分:0)
(a)您是否知道锁定文件不会阻止其他进程接触它,除非它们 还用锁吗? (b)你必须通过可写信道锁定。通过“rw”中的RandomAccessFile获取锁定 模式,然后打开您的FileInputStream。一定要关闭它们!