Java FileOutputStream创build文件如果不存在

有没有办法使用FileOutputStream的方式,如果一个文件(string文件名)不存在,那么它会创build它?

FileOutputStream oFile = new FileOutputStream("score.txt", false); 

如果文件不存在并且不能被创build( doc ),它会抛出一个FileNotFoundException ,但是如果可以的话它会创build它。 可以肯定的是,在创buildFileOutputStream之前,可能应该首先testing文件是否存在createNewFile()如果没有,则使用createNewFile()创build):

 File yourFile = new File("score.txt"); yourFile.createNewFile(); // if file already exists will do nothing FileOutputStream oFile = new FileOutputStream(yourFile, false); 

你可以创build一个空文件,不pipe它是否存在…

 new FileOutputStream("score.txt", false).close(); 

如果你想离开文件,如果它存在…

 new FileOutputStream("score.txt", true).close(); 

如果您尝试在不存在的目录中创build文件,则只会得到FileNotFoundException。

在创build文件之前,需要创build所有的父目录。

使用yourFile.getParentFile().mkdirs()

 File f = new File("Test.txt"); if(!f.exists()) f.createNewFile(); 

将这个f传递给你的FileOutputStream构造函数。

从apache commons的FileUtils是一个很好的方式来实现这一个单一的行。

 FileOutputStream s = FileUtils.openOutputStream("/home/nikhil/somedir/file.txt") 

这将创build父文件夹(如果不存在),并创build文件(如果不存在),并在文件对象是目录或无法写入时抛出exception。 这相当于

 File file = new File("/home/nikhil/somedir/file.txt"); file.getParentFile().mkdirs(); // Will create parent directories if not exists file.createNewFile(); FileOutputStream s = new FileOutputStream(file,false); 

如果当前用户不被允许执行操作,上述所有操作都将抛出exception。

如果文件不存在,您可能会得到FileNotFoundException

Java文档说:

文件是否可用或可以创build取决于基础平台http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html

如果您使用Java 7,则可以使用java.nio包:

options参数指定如何创build或打开文件…打开文件进行写入,如果文件不存在则创build文件…

http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html

如果不存在,则创build文件。 如果文件退出,请清除其内容:

 /** * Create file if not exist. * * @param path For example: "D:\foo.xml" */ public static void createFile(String path) { try { File file = new File(path); if (!file.exists()) { file.createNewFile(); } else { FileOutputStream writer = new FileOutputStream(path); writer.write(("").getBytes()); writer.close(); } } catch (IOException e) { e.printStackTrace(); } }