即使新创建文件,File.createnewFile()始终返回false

时间:2018-10-29 14:50:47

标签: java

我正在创建一个带有状态信息的文件:

"File f1=new File(//some random path)";
f1.mkdirs();

到目前为止,它工作正常。

try{

    boolean c=f1.createNewFile();

    }

catch(Exception e)
    {System.out.println("caught exception");}
     System.out.println(c);

每次执行代码时,它都会返回False,即使该文件以前不存在并且仅在此编译中是新创建的。

2 个答案:

答案 0 :(得分:0)

因为上一行中的mkdirs()已创建目录

  

创建以此抽象路径名命名的目录,包括任何必需但不存在的父目录。

并且createNewFile()将始终返回false,因为它已经创建

  

当且仅当具有此名称的文件不存在时,才会使用此抽象路径名创建一个新的空文件。

所以您可以满意

 boolean c = false; 
 try {
     c = f1.mkdirs();

答案 1 :(得分:0)

如果您的代码可以编译,则c是类中具有值false的字段。 try{}块中的局部变量仅存在于try{}块中,并且在处理System.out.println(c)之前被遗忘了。 您不是要从try块中打印c=f1.createNewFile()的返回值,而是要打印从未被触及的字段YourClass.c的内容。

如果您的班级中没有字段c,则您的代码将无法编译。