2015-12-29 112 views
0

我試圖創建一個文件並附加一些信息。創建文件時出錯

我做的第一件事就是創建文件夾,然後創建文件。

try { 
     if (!new File("Results\\" + p.getName()).exists()) { 
      new File("Results\\" + p.getName()).mkdir(); 
     } 
    } catch (Exception e) { 
     JOptionPane.showMessageDialog(null, "Error creating the directory"); 
    } 


try { 
    PrintWriter writer = new PrintWriter ("Results\\" + p.getName() + "\\" + simulation.getNameSim(), "utf-8"); 
    //After this instruction jumps to exception 

    //Code 
    } catch (Exception e) { 

    } 

變量p.getName和simulation.getName具有該信息。調試表示沒有創建目錄的錯誤,但在打印之後,程序拋出異常。

任何想法?我正在創建java程序目錄中的文件,因爲我需要將程序發送給其他人,我想它不是關於權限。

+3

介意加入th這個問題的例外是什麼? –

+0

發佈例外日誌 – Ramanlfc

回答

0

你還沒有向我們展示你得到的錯誤,但這裏有幾個要點:

  1. File.mkdir()扔在情況下的目錄中沒有創建一個例外(它返回false代替)。所以在catch後面顯示消息對話框沒有意義。

  2. 由於目錄路徑實際上由兩個文件夾組成,因此您需要撥打mkdirs()而不是mkdir()。前者將創建任何需要的父目錄。在這種情況下,它在創建由p.getName()命名的文件夾之前首先創建文件夾Results

0

這段代碼對我來說工作正常。 它基本上是你的代碼用更少的東西保持相同,但:

public static void main(String[] args) { 
    try { 
     if (!new File("Results/anyfoldername").exists()) { 
      new File("Results/anyfoldername").mkdir(); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 


try { 
    PrintWriter writer = new PrintWriter ("Results/anyfolder/anyfilename","utf-8"); 
    //After this instruction jumps to exception 

    //Code 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

}

這可以幫助你。您應該嘗試使用「/」而不是「\」 當使用「\」時,我得到一個它無法找到目錄的異常。

+0

更好的是,使用File.separator。 – Berger

0

正如前面回答說沒有太多去:)

,但是我要說,你需要像這樣

if (!new File("Results\\" + p.getName()).exists()) { 
    if (!new File("Results\\" + p.getName()).mkdir()) { 
     JOptionPane.showMessageDialog(null, "Error creating the directory"); 
     return; 
    } 
} 

    //removed try/catch here for clarity 
    File file = new File("Results\\" + p.getName() + "\\" + simulation.getNameSim()).createNewFile(); 
    // I would then use the Buffered File answer as detailed here: http://stackoverflow.com/questions/1053467/how-do-i-save-a-string-to-a-text-file-using-java 

它看起來對我說,你正在使用的FileWriter,然後將使用FileWriter.println(),但從代碼片段中不清楚。

我也會在文件路徑中使用File.separator而不是\。

個人而言,我會永遠去的的BufferedReader /作家

0

對不起球員,我不得不因爲我遇到的網絡問題迅速發佈問題,所以我在我的文章會錯過很多東西

@manouti是正確的......我懷念的mkdir 小號 ......這就夠了創建2個文件夾

非常感謝球員,並再次..真的真的很抱歉,對於缺乏信息