如何保护打开文本文件免受java中的写入

时间:2013-12-30 20:30:59

标签: java file

我试图保护打开的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的方法......

2 个答案:

答案 0 :(得分:0)

您可以从文件中删除用户的读取权限,但这会有问题(如果您的程序在还原之前崩溃,您的用户可能会抱怨)。

解决此问题的一种更常见的方法是在打开文件时锁定文件,这样就可以确保在关闭文件之前无法再次打开文件(如果程序崩溃,操作系统会释放锁定你)。

答案 1 :(得分:0)

(a)您是否知道锁定文件不会阻止其他进程接触它,除非它们 还用锁吗? (b)你必须通过可写信道锁定。通过“rw”中的RandomAccessFile获取锁定 模式,然后打开您的FileInputStream。一定要关闭它们!