2013-08-21 114 views
-4

那么我的问题是,如果说我正在做一个文件,像这样如果目录不存在,是否会创建一个文件?

File f = new File("THE_Folder/me.txt"); 

但“THE_Folder”犯规存在,该文件夹将仍然在最后,当我保存文件中创建的文件?它会创建“THE_Folder”和“me.txt”吗?

+4

当你尝试时发生了什么?顺便说一句,不是我的倒票。 –

+1

-1:这个问题没有显示任何研究工作。请参阅[文档](http://docs.oracle.com/javase/7/docs/api/java/io/File.html#File(java.lang.String))。 – bdares

+1

你曾尝试过吗? –

回答

3

不,它不会。但有一个方便的createNewFile()mkdirs()方法。

更具体地说,使用mkdirs()来创建目录,但是您首先需要调用getParentFile(),因为您不想创建名为me.txt的目录。

然后你可以调用createNewFile()方法来最终创建你的新文件。

正如EJP所解释的,没有必要致电createNewFile(),因为FileOutputStreamFileWriter会为您创建新文件。

+0

不,没有。 'File.createNewFile()'的行为方式相同。它不会创建缺少的中间目录。 – EJP

+0

你试过这个不存在的目录吗? –

+0

哎呀,我刚刚做了,我纠正了我的答案。 – sgbj

2

File不会创建文件/文件夹,它只是打开一个文件,除非您调用方法createNewFile(),它将创建一个具有指定名称的文件(不是文件夹)。所以,不,它不会

+0

否'除非'有关它。 'File.createNewFile()'不会创建目录。 – EJP

+0

我的不好。我没有在问题中读到'文件夹'一词。答案已更正:-) –

+0

你还是错的。它不'打开文件'。它只是在内存中创建一个'File'对象。它不会对文件系统做任何事情。 – EJP

2

创建一个File对象本身并不会创建文件或目录。您可以拨打

File f2 = f.getParentFile(); 
if (f2 != null) f2.mkdirs(); 

如果它们不存在,则创建必要的目录。 (您不需要null检查,如果你确定f指定父目录,现有的或以其他方式)。在此之后,你可以调用

f.createNewFile(); 

创建该文件本身。请注意,如果您在创建目录之前尝试创建该文件,您将得到一个IOException

+0

'f.getParentFile()。mkdirs()'实际上。 – EJP

+0

@EJP - 很好的结果 –

相关问题