2010-03-29 7 views
8

OK, je me sens comme cela devrait être facile, mais il me manque évidemment quelque chose de fondamental à l'écriture de fichiers en Java. J'ai ceci:FileNotFound exception lors de la tentative d'écriture dans un fichier

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

et je veux juste écrire dans le fichier. Cependant, tandis que someDir existe, certains DirB (et donc certains DirC et filename.txt) n'existent pas. Pour ce faire:

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

déclenche un FileNotFoundException. Eh bien, euh, sans blague. J'essaye de le créer après tout. Dois-je découper le chemin du fichier en composants, créer les répertoires, puis créer le fichier avant d'instancier l'objet FileWriter?

Répondre

16

Vous devez d'abord créer tous les répertoires précédents. Et here est comment le faire. Vous devez créer un objet File représentant le chemin que vous voulez créer et appeler le .mkdirs(). Ensuite, assurez-vous de create le nouveau fichier.

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

Merci, mais il y a quelques bits non faits ci-dessus. Premièrement, vous pouvez appeler mkdirs() sur les répertoires existants et il retournera simplement false au lieu de lancer une exception. De plus, dans mon cas, une fois les répertoires créés, je peux passer l'étape createNewFile() et aller directement à l'étape FileWriter. –

+1

createNewFile() est redondant et donc downvoting. – EJP

+2

createNewFile() est redondant mais le reste du code fonctionne correctement. D'où l'upvoting. –

Questions connexes