Есть ли способ использовать FileOutputStream таким образом, что если файл (String filename) не существует, то он его создаст?
FileOutputStream oFile = new FileOutputStream("score.txt", false);
Есть ли способ использовать FileOutputStream таким образом, что если файл (String filename) не существует, то он его создаст?
FileOutputStream oFile = new FileOutputStream("score.txt", false);
Он выкинет 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()
File f = new File("Test.txt");
if(!f.exists()){
f.createNewFile();
}else{
System.out.println("File already exists");
}
Передайте это f
вашему конструктору FileOutputStream
.
Вы можете создать пустой файл, существует ли он или нет...
new FileOutputStream("score.txt", false).close();
если вы хотите оставить файл, если он существует...
new FileOutputStream("score.txt", true).close();
Вы получите только FileNotFoundException, если попытаетесь создать файл в директории, которая не существует.
FileUtils из Apache Commons - довольно хороший способ добиться этого в одной строке.
FileOutputStream s = FileUtils.openOutputStream(new File("/home/nikhil/somedir/file.txt"))
Это создаст родительские папки, если они не существуют, и создаст файл, если он не существует, и выдаст исключение, если объект файла является каталогом или не может быть записан в. Это эквивалентно:
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.nio:
Параметр 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());