2012-08-26 14 views
7

Bir dizin oluşturmaya çalışıyorum ama her seferinde başarısız gibi görünüyor? Bunun bir izin konusu olmadığını da kontrol ettim, bu dizine yazmak için tam bir iznim var. Şimdiden teşekkürler. File.mkdir üst dizin var olduğu takdirde dizin oluşturur çünküJava - mkdir() dizin yazmıyor

Directory is not created 
Error: C:\Program Files\Sure Important\Report Cards\2012\7\4532.txt (The system cannot find the path specified) 

cevap

24

Bu muhtemelen var: Burada

private void writeTextFile(String v){ 
    try{ 

     String yearString = convertInteger(yearInt); 
     String monthString = convertInteger(month); 
     String fileName = refernce.getText(); 
     File fileDir = new File("C:\\Program Files\\Sure Important\\Report Cards\\" + yearString + "\\" + monthString); 
     File filePath = new File(fileDir + "\\"+ fileName + ".txt"); 
     writeDir(fileDir); 
     // Create file 
     FileWriter fstream = new FileWriter(filePath); 
     try (BufferedWriter out = new BufferedWriter(fstream)) { 
      out.write(v); 
     } 
    }catch (Exception e){//Catch exception if any 
    System.err.println("Error: " + e.getMessage()); 
    } 
} 

private void writeDir(File f){ 
    try{ 
     if(f.mkdir()) { 
      System.out.println("Directory Created"); 
     } else { 
     System.out.println("Directory is not created"); 
     } 
    } catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

public static String convertInteger(int i) { 
    return Integer.toString(i); 
} 

Calendar cal = new GregorianCalendar(); 
public int month = cal.get(Calendar.MONTH); 
public int yearInt = cal.get(Calendar.YEAR); 

çıktı: İşte

kodudur. Gerekli tüm dizinleri oluşturan File.mkdirs kullanmayı deneyin.

İşte benim için çalışan kod.

private void writeDir(File f){ 
    try{ 
     if(f.mkdirs()) { 
      System.out.println("Directory Created"); 
     } else { 
     System.out.println("Directory is not created"); 
     } 
    } catch(Exception e){ 
      // Demo purposes only. Do NOT do this in real code. EVER. 
      // It squashes exceptions ... 
     e.printStackTrace(); 
    } 
} 

yaptığım tek değişiklik f.mkdirs() için f.mkdir() değiştirmek oldu ve

+0

Cheers (Açıkçası, bu olasılıkların bazıları hızla ... Bu sorunu bağlamında elimine edilebilir) TEŞEKKÜRLER!!! – Nick

+1

Yoladının "dinamik" bölümü iki dizine sahip olduğundan, bu teorinin oldukça iyi olduğunu söyleyebilirim ... –

+1

Kodunu kopyaladım, mkdirs() olarak değiştirdim ve işe yaradı. İlgili kodu –

6

Bence çalıştı bla çivilenmiş ama sadece şeyiyle, burada şeylerin hepsi etmiştir @La bla that I can o o düşünmek başarısız File.mkdir() için bir çağrı neden olabilir:

  • yol adında bir sözdizimi hatası; Örneğin. Bir dosya adı bileşeninde geçersiz bir karakter bileşeni
  • Son dizin bileşenini içeren dizin mevcut değil.
  • Bu ada sahip bir şey zaten var.
  • Sen
  • dizin oluşturulacak yolunda bazı dizininde bir arama yapmak için izniniz yok
  • üst dizinde bir dizin oluşturma izniniz yok salt okunur olduğunu dosya sistemi.
  • Dosya sistemi bir donanım hatası veya ağla ilgili bir hata verdi.

o :) beni alows zaman cevabını kabul edecek, sorun gibi görünüyor

+0

WINDOWS7 İÇİN UYARI içerecek şekilde düzenleme. Sadece bir dosya adı Window7 eski sözcüklerinden biri olan herhangi bir dizin parçası içeriyorsa (yani: CON, PRN, AUX, CLOCK $, NUL, COM1-COM9, LPT1-LPT9 ... hepimizin bildiği gibi) keşfettim. ... yapmadık mı?) mkdirs uyarı veya görünür mantıksal açıklama olmadan başarısız olur. Java 7 b51'de bulunur - Java'nın diğer sürümlerini veya diğer programlama dillerini etkilemeyebilir. DOS cmd kabuğunu etkilemez. –