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