2010-03-29 19 views
8

OK, me parece que esto debería ser fácil, pero obviamente me falta algo fundamental para escribir archivos en Java. Tengo esto:Excepción FileNotFound al intentar escribir en un archivo

File someFile = new File("someDirA/someDirB/someDirC/filename.txt"); 

y solo quiero escribir en el archivo. Sin embargo, aunque existe SomeDirA, no existen algunosDirB (y, por lo tanto, someDirC y filename.txt). Haciendo esto:

BufferedWriter writer = new BufferedWriter(new FileWriter(someFile)); 

throws a FileNotFoundException. Bueno, er, no es broma. Intento crearlo después de todo. ¿Debo dividir la ruta del archivo en componentes, crear los directorios y luego crear el archivo antes de crear el objeto FileWriter?

Respuesta

16

Primero debe crear todos los directorios anteriores. Y here es cómo hacerlo. Necesita crear un objeto File que represente la ruta que desea que exista y luego llamar al .mkdirs(). Luego, asegúrese de create el nuevo archivo.

final File parent = new File("someDirA/someDirB/someDirC/"); 
if (!parent.mkdirs()) 
{ 
    System.err.println("Could not create parent directories "); 
} 
final File someFile = new File(parent, "filename.txt"); 
someFile.createNewFile(); 
+0

Gracias, pero hay unos pocos bits no de hecho que anteceden. En primer lugar, puede llamar a mkdirs() en directorios existentes y simplemente devolverá false en lugar de lanzar una excepción. Además, en mi caso, una vez que se crean los directorios, puedo omitir el paso createNewFile() e ir directamente al paso FileWriter. –

+1

createNewFile() es redundante, por lo tanto, downvoting. – EJP

+2

createNewFile() se retomó pero el resto del código funciona bien. Por lo tanto upvoting. –

Cuestiones relacionadas