使用 java.io.File 在文件系统上创建文件
Posted
技术标签:
【中文标题】使用 java.io.File 在文件系统上创建文件【英文标题】:Creating file on filesystem with java.io.File 【发布时间】:2015-09-23 05:14:16 【问题描述】:我正在尝试使用 java.io.File 在我的文件系统上创建一个空的 .properties 文件。
我的代码是:
File newFile = new File(new File(".").getAbsolutePath() + "folder\\" + newFileName.getText() + ".properties");
if (newFile.createNewFile())
//do sth...
它说不可能找到指定的路径。 打印 Files 的构造函数参数,它正确显示了绝对路径。
怎么了?
【问题讨论】:
1- 您可以只使用new File("folder", newFileName.getText() + ".properties")
,它会将文件存储在相对于您当前位置的folder
目录中; 2.确保路径存在,因为createNewFile
不会为你创建路径(你可以使用newFile.getParentFile().mkdirs()
)
非常感谢,它有效!在任何情况下,我都会采用您的更清洁的解决方案 - 但是 - 为什么不适合我的解决方案?
我真的不知道,缺少很多上下文,但是以 new File(".").getAbsolutePath() + "folder\\"
开头的“。”之间没有分隔符。和“文件夹”,所以你最终得到了“.folder”(填写绝对路径而不是“。”,但你明白了)
你检查目标目录的写权限了吗?
那是......我没想到会发生如此微不足道的事情。再次感谢 MadProgrammer!
【参考方案1】:
-
您可以使用
new File("folder", newFileName.getText() + ".properties")
,它会在相对于当前工作目录的folder
目录中创建对指定文件的文件引用
您应该在调用createNewFile
之前确保该目录存在,因为它不会为您执行此操作
例如...
File newFile = new File("folder", newFileName.getText() + ".properties");
File parentFile = newFile.getParentFile();
if (parentFile.exists() || parentFile.mkdirs())
if (!newFile.exists())
if (newFile.createNewFile())
//do sth...
else
throw new IOException("Could not create " + newFile + ", you may not have write permissions or the file is opened by another process");
else
throw new IOException("Could not create directory " + parentFile + ", you may not have write permissions");
【讨论】:
【参考方案2】:我认为“。”操作员可能会导致错误,不确定您要在那里做什么,可能误解了您的意图,但请尝试以下操作:
File newFile = new File(new File("folder\\").getAbsolutePath() + ".properties");
【讨论】:
不,它没有,你可以使用new File(".")
为当前工作目录创建一个文件引用,就像new File("folder");
将创建一个File
引用文件/目录调用folder
在当前工作目录中【参考方案3】:
我很容易错过new File(".").getAbsolutePath()
返回项目的绝对路径,最后是.
,所以我的folder
应该被称为.folder
。下次我会检查两次。
【讨论】:
以上是关于使用 java.io.File 在文件系统上创建文件的主要内容,如果未能解决你的问题,请参考以下文章