Java FileOutputStream Crea file se non esiste

C’è un modo per usare FileOutputStream in modo che se un file (nome file String) non esiste, allora lo creerà?

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

FileNotFoundException una FileNotFoundException se il file non esiste e non può essere creato ( doc ), ma lo creerà se ansible. Per essere sicuro, probabilmente dovresti prima verificare che il file esista prima di creare FileOutputStream (e creare con createNewFile() se non lo fa):

 File yourFile = new File("score.txt"); yourFile.createNewFile(); // if file already exists will do nothing FileOutputStream oFile = new FileOutputStream(yourFile, false); 

Prima di creare un file, è necessario creare tutte le directory madri.

Usa yourFile.getParentFile().mkdirs()

Puoi creare un file vuoto indipendentemente dal fatto che esista o meno …

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

se vuoi lasciare il file se esiste …

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

Si otterrà solo un FileNotFoundException se si tenta di creare il file in una directory che non esiste.

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

Passa questo f al tuo costruttore FileOutputStream .

FileUtils da apache commons è un ottimo modo per ottenere questo risultato in una singola riga.

 FileOutputStream s = FileUtils.openOutputStream("/home/nikhil/somedir/file.txt") 

Ciò creerà le cartelle principali se non esistono e creerà un file se non esiste e genererà un’eccezione se l’object file è una directory o non può essere scritto. Questo è equivalente a :

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

Tutte le operazioni di cui sopra genereranno un’eccezione se l’utente corrente non è autorizzato a eseguire l’operazione.

Crea un file se non esiste. Se il file termina, cancella il suo contenuto:

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

È ansible ottenere potenzialmente un object FileNotFoundException se il file non esiste.

La documentazione Java dice:

Se un file è disponibile o può essere creato dipende dalla piattaforma sottostante http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html

Se stai usando Java 7 puoi usare il pacchetto java.nio:

Il parametro options specifica come il file viene creato o aperto … apre il file per la scrittura, creando il file se non esiste …

http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html

Basta dare un modo alternativo per creare il file solo se non esiste utilizzando Path e Files.

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