2012-12-16 97 views
1

鑑於這種方法:如何使用JFileChooser保存txt文件?

public void OutputWrite (BigInteger[] EncryptCodes) throws FileNotFoundException{ 

    JFileChooser chooser = new JFileChooser(); 

    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
    chooser.showSaveDialog(null); 

    String path = chooser.getSelectedFile().getAbsolutePath(); 

    PrintWriter file = new PrintWriter(new File(path+"EncryptedMessage.txt")); 

    for (int i = 0; i <EncryptCodes.length; i++) { 
     file.write(EncryptCodes[i]+ " \r\n");  
    } 
    file.close(); 
} 

忽略的變量名,這是什麼方法確實是叫EncryptedMessage.txt項目文件夾內生成的TXT文件的EncryptCodes數據寫入。

我需要的是一種方法來保存該文本文件,而不是在項目文件夾中,保存在用戶在運行時指定的位置(打開另存爲對話框)。我認爲這可以通過JFilechooser完成,但我無法實現它的工作。

回答

0

是這樣的?

PrintWriter file = new PrintWriter(new File(filePathChosenByUser + "EncryptedMessage.txt")); 
+0

文件路徑應該在運行時由用戶選擇 – user1111726

+0

好,那麼你必須在運行時填寫'filePathChosenByUser'? – Theolodis

+0

如果我正確地理解了你,你需要用戶在其詢問時真正寫出路徑,我需要的是一個在運行時打開的對話框,以及供用戶選擇目錄 – user1111726

5

你可以添加一個單獨的方法用於獲取保存位置,像這樣:

private File getSaveLocation() { 
    JFileChooser chooser = new JFileChooser(); 
    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
    int result = chooser.showSaveDialog(this); 

    if (result == chooser.APPROVE_OPTION) { 
     return chooser.getSelectedFile(); 
    } else { 
     return null; 
    } 
} 

,然後使用結果作爲參數傳遞給重載File構造函數父/目錄參數:

public void writeOutput(File saveLocation, BigInteger[] EncryptCodes) 
       throws FileNotFoundException { 

    PrintWriter file = 
     new PrintWriter(new File(saveLocation, "EncryptedMessage.txt")); 
    ... 
} 
+0

是的..完美的,但短語「這個」提出了一個錯誤。 方法JFileChooser類中的showSaveDialog不能應用於給定的類型; 必需:組件 找到:RSAEncryption 原因:實際參數RSAEncryption無法通過方法調用轉換轉換爲組件 ---- – user1111726

+0

好的,您需要一個'JFrame'參數。如果您僅在控制檯應用程序中使用「JFileChooser」,則可以在此處簡單地使用「null」。 – Reimeus

+0

非常感謝,它的工作 – user1111726

相關問題