JAVA新文件或目录创建返回false

时间:2016-10-17 23:56:09

标签: java file

我尝试从java.io.File创建一个新文件,但它的方法createNewFile()返回false(以及setWritable(true)mkdirs())。

是权限问题吗?我该如何改变这种行为?

额外信息:

  • File.exists()返回true。

  • createNewFile()不会抛出任何例外情况。

  • 我运行的用户有权在目录中创建文件,但canWrite()返回false。

  • 此外,如果发生任何变化,我正在使用Eclipse。

1 个答案:

答案 0 :(得分:2)

Javadoc它说只有在文件不存在的情况下才会创建新文件。 由于File.exists()返回true,表示文件存在,createNewFile将始终返回false,直到文件被删除。 java.io.File 当且仅当具有此名称的文件尚不存在时,以原子方式创建一个由此抽象路径名命名的新空文件。

一般情况下,如果您在软件中有权限问题,建议的解决方法是:

  1. 如果可以创建文件,请从shell进行测试。如果没有修复权限。
  2. 检查java可执行文件是否以您自己的权限运行(可能它有SUID标志?)。
  3. 检查是否存在拒绝您访问文件系统的JAVA安全策略。