Java FileOutputStream создать файл, если не существует
есть ли способ использовать FileOutputStream таким образом, что если файл (строковое имя файла) не существует, то он создаст его?
FileOutputStream oFile = new FileOutputStream("score.txt", false);
8 ответов
Он бросит FileNotFoundException
если файл не существует и не может быть создан (doc), но он создаст его, если он может. Чтобы убедиться, что вы, вероятно, должны сначала проверить, что файл существует, прежде чем создавать FileOutputStream
(и создать с createNewFile()
если это не так):
File yourFile = new File("score.txt");
yourFile.createNewFile(); // if file already exists will do nothing
FileOutputStream oFile = new FileOutputStream(yourFile, false);
перед созданием файла необходимо создать все родительские каталоги.
использовать yourFile.getParentFile().mkdirs()
вы можете создать пустой файл, независимо от того, существует он или нет ...
new FileOutputStream("score.txt", false).close();
Если вы хотите оставить файл, если он существует ...
new FileOutputStream("score.txt", true).close();
вы получите исключение FileNotFoundException только при попытке создать файл в каталоге, который не существует.
File f = new File("Test.txt");
if(!f.exists()){
f.createNewFile();
}else{
System.out.println("File already exists");
}
пройти этот f
на FileOutputStream
конструктор.
пакета fileutils из Apache commons-довольно хороший способ достичь этого в одной строке.
FileOutputStream s = FileUtils.openOutputStream("/home/nikhil/somedir/file.txt")
это создаст родительские папки, если они не существуют, и создаст файл, если он не существует, и создаст исключение, если объект file является каталогом или не может быть записан. Это эквивалентно:
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);
все вышеперечисленные операции вызовут исключение, если текущему пользователю не разрешено выполнять операцию.
создать файл если не существует. Если файл выходит, очистите его содержимое:
/**
* 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();
}
}
вы можете потенциально получить FileNotFoundException
Если файл не существует.
документация Java говорит:
доступен ли файл или может быть создан, зависит от базовая платформа http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html
Если вы используете Java 7 Вы можете использовать Java.пакет НИО:
параметр options указывает способ создания файла или открытый... он открывает файл для записи, создать файл если он не существует...
http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html
просто давая альтернативный способ создать файл, только если не существует с помощью пути и файлов.
Path path = Paths.get("Some/path/filename.txt");
Files.createDirectories(path.getParent());
if( !Files.exists(path))
Files.createFile(path);
Files.write(path, ("").getBytes());