使用 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 在文件系统上创建文件的主要内容,如果未能解决你的问题,请参考以下文章

第一节:Java之文件系统操作(Java.io.File)

:Java之文件系统操作(Java.io.File)和文件内容的读写

File java IO

File类与IO流

Java IO: File

第1章 Java IO系统