2012-03-08 46 views

Respuesta

202

Será lanzar una FileNotFoundException si el archivo no existe y no se puede crear (doc), pero lo creará si se puede. Para asegurarse de que, probablemente, primero debe probar que el archivo existe antes de crear el FileOutputStream (y crea con createNewFile() si no lo hace):

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

Si el archivo no existe, ¿cómo crearía un archivo .txt vacío? –

+2

@StefanDunn con el método 'createNewFile()', como se muestra en mi ejemplo. – talnicolas

+48

La condición es redundante. De acuerdo con [JavaDoc] (http://docs.oracle.com/javase/1.4.2/docs/api/java/io/File.html#createNewFile%28%29), 'createNewFile()' comprueba atómicamente el existencia del archivo. – aztek

16
File f = new File("Test.txt"); 
if(!f.exists()) 
    f.createNewFile(); 

pasar esta f a su FileOutputStream constructor.

+0

esto ha creado el archivo si no se ha encontrado, gracias. –

+0

La mejor respuesta aquí. +1. – m4heshd

1

Es posible que obtenga un FileNotFoundException si el archivo no existe.

documentación de Java dice:

Sea o no un archivo está disponible o se puede crear depende de la plataforma subyacente http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html

Si está utilizando Java 7 se puede utilizar el paquete java.nio:

El parámetro options especifica cómo se crea o abre el archivo ... se abre el archivo para escribir, crear el archivo si no existe ...

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

21

Puede crear un archivo vacío si existe o no ...

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

si desea dejar el archivo si existe ...

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

sólo obtendrás un FileNotFoundException si se intenta crear la ficción le en un directorio que no existe.

+1

Lanza 'FileNotFoundException' en ambos casos. – mixel

20

Antes de crear un archivo, es necesario crear todos los directorios principales.

Uso yourFile.getParentFile().mkdirs()

11

FileUtils de bienes comunes Apache es una muy buena manera de lograr esto en una sola línea.

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

Esto creará las carpetas principales, si no existen y crear un archivo si no existe y lanzar una excepción si el objeto archivo es un directorio o no se puede escribir. Esto es 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); 

Todas las operaciones anteriores se producirá una excepción si el usuario actual no está autorizado a hacer la operación.

2

Crear archivo si no existe.Si las salidas de archivos, borrar su contenido:

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

Sólo Dar una forma alternativa de crear el archivo sólo si no existe el uso de Path y archivos.

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