我尝试从 java.io.File
创建一个新文件,但它的方法 createNewFile()
返回 false (以及 setWritable(true )
和 mkdirs()
)。
是不是权限问题?我怎样才能改变这种行为?
额外信息:
File.exists()
返回 true。createNewFile()
不会引发任何异常。我运行的用户有权在目录中创建文件,但
canWrite()
返回 false。另外,如果有什么改变的话,我正在使用 Eclipse。
最佳答案
Javadoc 表示,仅当文件尚不存在时才会创建新文件。 由于 File.exists() 返回 true ,这意味着文件存在,并且 createNewFile 将始终返回 false ,直到文件被删除。 java.io.File 当且仅当具有此名称的文件尚不存在时,才会自动创建一个以此抽象路径名命名的新的空文件。
一般来说,如果您在软件中遇到权限问题,建议的解决方法是:
- 从 shell 测试是否可以创建文件。如果没有修复权限。
- 检查 java 可执行文件是否以您自己的权限运行(也许它有 SUID 标志?)。
- 检查是否有 JAVA 安全策略拒绝您访问文件系统。
关于JAVA新建文件或目录创建返回false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40097444/