2010-03-29 27 views
8

Tamam, bu kolay olmalı ama Java dosya yazma temel bir şey eksik olduğunu hissediyorum. Ben bu:FileNotFound istisnası

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

ve ben sadece dosyaya yazmak istiyorum. Ancak, bazıDirA var iken, bazıDirB (ve bu nedenle bazıDirC ve dosyaadı.txt) mevcut değil. Bunu yapmak:

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

bir FileNotFoundException atar. Şey, şaka yapıyorum. Herşeyi yaratmaya çalışıyorum. Dosya yolunu bileşenlere ayırmam, dizinleri oluşturmam ve FileWriter nesnesini oluşturmadan önce dosyayı oluşturmam gerekir mi?

cevap

16

Öncelikle tüm önceki dizinleri oluşturmanız gerekir. Ve here bunun nasıl yapılacağıdır. Var olmak istediğiniz yolu temsil eden File nesnesini oluşturmanız ve üzerinde .mkdirs() numarasını aramanız gerekir. Sonra yeni dosya create emin olun.

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

Sağol ama yukarıda olmayan birkaç somut bit vardır. Öncelikle, mevcut dizinlerde mkdirs() 'i çağırabilir ve bir istisna atmak yerine sadece false döndürür. Ayrıca, benim durumumda, dizinler oluşturulduktan sonra, createNewFile() adımını atlayabilir ve doğrudan FileWriter adımına geçebilirim. –

+1

createNewFile() artık gereksizdir. – EJP

+2

createNewFile() yineleniyor, ancak kodun geri kalanı düzgün çalışıyor. Böylece çekilmek. –