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(); } }