Java FileOutputStream Создать файл, если он не существует

Есть ли способ использовать FileOutputStream таким образом, что если файл (String filename) не существует, то он его создаст?

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

Ответ 1

Он выкинет 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); 

Ответ 2

Перед созданием файла ему необходимо создать все родительские каталоги.

Используйте yourFile.getParentFile().mkdirs()

Ответ 3

File f = new File("Test.txt");
if(!f.exists()){
  f.createNewFile();
}else{
  System.out.println("File already exists");
}

Передайте это f вашему конструктору FileOutputStream.

Ответ 4

Вы можете создать пустой файл, существует ли он или нет...

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

если вы хотите оставить файл, если он существует...

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

Вы получите только FileNotFoundException, если попытаетесь создать файл в директории, которая не существует.

Ответ 5

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

Все вышеперечисленные операции вызовут исключение, если текущему пользователю не разрешено выполнять операцию.

Ответ 6

Создайте файл, если он не существует. Если файл выходит, очистите его содержимое:

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

Ответ 7

Вы можете получить 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

Ответ 8

Просто предоставьте альтернативный способ создания файла, только если его не существует, используя путь и файлы.

Path path = Paths.get("Some/path/filename.txt");
Files.createDirectories(path.getParent());
if( !Files.exists(path))
    Files.createFile(path);
Files.write(path, ("").getBytes());