Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何保护打开的文本文件不被java写入_Java_File - Fatal编程技术网

如何保护打开的文本文件不被java写入

如何保护打开的文本文件不被java写入,java,file,Java,File,我试图保护打开的txt文件不被写入。我找到了canRead()和canWrite()方法,但它们在我的代码中没有用处。关闭文件后,更改已完成 下面是我的一段代码: private void filesMethod(String directoryName, String fileExtension, String textFind, String textSet) { File file = new File(directoryName); 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的方法…

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

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

(A)您是否意识到锁定文件不会阻止其他进程接触它,除非它们 也使用锁吗? (b) 您必须通过可写通道锁定。通过“rw”中的RandomAccessFile获取锁
模式,然后打开您的FileInputStream。一定要把两个都关上

你所说的“改变”是什么意思?你的问题很不清楚。当文件打开时,我不想更改它。你在找一个吗?要使它在不同的平台上工作,这将是非常困难的。您正在进入操作系统特定的命令。请查看这些命令是否有帮助。