2010-05-24 20 views
5

के साथ निर्दिष्ट नहीं मिल रहा है मैं इस कोड है:सिस्टम पथ FileWriter

private static void saveMetricsToCSV(String fileName, double[] metrics) { 
     try { 
      FileWriter fWriter = new FileWriter(
        System.getProperty("user.dir") + "\\output\\" + 
        fileTimestamp + "_" + fileDBSize + "-" + fileName + ".csv" 
      ); 

      BufferedWriter csvFile = new BufferedWriter(fWriter); 

      for(int i = 0; i < 4; i++) { 
       for(int j = 0; j < 5; j++) { 
        csvFile.write(String.format("%,10f;", metrics[i+j])); 
       } 

       csvFile.write(System.getProperty("line.separator")); 
      } 

      csvFile.close(); 
     } catch(IOException e) { 
      System.out.println(e.getMessage()); 
     } 
    } 

लेकिन मैं इस त्रुटि मिलती है:

C:\Users\Nazgulled\Documents\Workspace\Só Amigos\output\1274715228419_5000-List-ImportDatabase.csv (The system cannot find the path specified)

किसी भी विचार क्यों?

मैं विंडोज 7 पर NetBeans का उपयोग कर रहा है, तो यह मायने रखता है ...

+0

क्या वह पथ और फ़ाइल मौजूद है? –

+2

भी मामूली बिंदु, यह आमतौर पर पथ का उपयोग करने के लिए अच्छा रूप है। कॉम्बाइन() ... –

+1

नहीं, लेकिन जैसा कि मैं लिखने और पढ़ने की कोशिश नहीं कर रहा हूं, मैंने सोचा कि पथ/फ़ाइल स्वचालित रूप से बनाई जाएगी ... –

उत्तर

11

सामान्य तौर पर, एक गैर विद्यमान फ़ाइल केवल तभी मूल निर्देशिका मौजूद जावा द्वारा बनाया जाएगा। आप की जाँच करनी चाहिए/बनाने निर्देशिका वृक्ष:

String filenameFullNoPath = fileTimestamp + "_" + fileDBSize + "-" 
     + fileName + ".csv"; 
    File myFile = new File(System.getProperty("user.dir") + File.separator 
     + "output" + File.separator + filenameFullNoPath); 
    File parentDir = myFile.getParentFile(); 
    if(! parentDir.exists()) 
     parentDir.mkdirs(); // create parent dir and ancestors if necessary 
    // FileWriter does not allow to specify charset, better use this: 
    Writer w = new OutputStreamWriter(new FileOutputStream(myFile),charset); 
+0

मुझे लगता है कि आपको "myFile.getParentFile()" के साथ "myFile.getParent()" (जो एक स्ट्रिंग देता है) को प्रतिस्थापित करने की आवश्यकता हो सकती है। – Glennn

+0

@Glenn: आप सही हैं, ठीक है – leonbloy

1

मुझे लगता है कि चाहते हैं कि "उत्पादन" निर्देशिका मौजूद नहीं है। जोड़ने का प्रयास करें:

new File(System.getProperty("user.dir") + File.separator + "output").mkdir(); 
1

आप उपयोग कर सकते हैं getParentFile (Java Doc) सुनिश्चित करें कि मूल निर्देशिका मौजूद है बनाने के लिए। निम्नलिखित जांच लेंगे कि मूल निर्देशिका मौजूद है, और अगर ऐसा नहीं होता है तो इसे बनाएं।

File myFile = new File(fileName); 
if(!myFile.getParentFile.exists()) { 
    myFile.getParentFile.mkdirs(); 
} 
संबंधित मुद्दे