Java 无法再次创建相同的文件

Java 无法再次创建相同的文件,java,file,Java,File,我有一个类,它将文档表示为目录,将任何文档页面表示为单个文件。我使用构造函数创建目录中的所有文件。我有一种方法可以用新版本替换文件内容。我试图删除它,然后用Java类文件的方法重新创建它,但它给了我一个例外 我使用eclipse在Windows10上运行它 我使用相同的方法在同一目录中成功地创建了一个具有其他名称的文件 我试图在删除旧文件之后和创建新文件之前调用Java类文件的方法setWritable(),但它返回false 我尝试了Files.delete(f.toPath()),但它没有给

我有一个类,它将文档表示为目录,将任何文档页面表示为单个文件。我使用构造函数创建目录中的所有文件。我有一种方法可以用新版本替换文件内容。我试图删除它,然后用Java类文件的方法重新创建它,但它给了我一个例外

我使用eclipse在Windows10上运行它

我使用相同的方法在同一目录中成功地创建了一个具有其他名称的文件

我试图在删除旧文件之后和创建新文件之前调用Java类文件的方法setWritable(),但它返回false

我尝试了Files.delete(f.toPath()),但它没有给出任何异常

代码如下:

synchronized(sync) {
    File f=new File(docPath+section+".txt");
    try{
        f.delete();
        f.createNewFile(); //this line give me the exception
        //write new version on the file
        FileChannel out=FileChannel.open(Paths.get(docPath+section+".txt"), StandardOpenOption.WRITE);
        while (modifiedSection.hasRemaining())
            out.write(modifiedSection);
        modifiedSection.clear();
        out.close();
        }
 }
这是一个例外:

java.io.IOException: Access denied
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(Unknown Source)
at Server.Document.endEditSection(Document.java:134)
at Server.Test.run(Test.java:29)
at java.lang.Thread.run(Unknown Source)

可能是许可问题

请检查f.delete()是否返回false。在这种情况下,文件仍然存在,您无法重新创建它

使用此代码段进行测试

public static void main(String[] args) throws IOException {
    File f = new File("c:\\a.txt"); //new file in a readonly location
    f.delete(); //it returns false, so the file is still there
    f.createNewFile(); //throws Access denied exception
}

很可能您没有在代码的其他地方关闭同一个文件。f、 delete()将返回一个布尔值,无论文件是否已删除。您还可以使用Files.delete(f.toPath())进行检查,如果失败,它将抛出AccessDeniedException。否,delete()返回true