2015-09-22 33 views
0

對於我正在進行的項目,我被要求在我的程序中添加一個功能。目前該程序允許用戶上傳文件,然後操作。重新格式化後,文件被保存到一個新的.ACH文件中(這只是一個具有嚴格格式標準的文本文件)。使用BufferedWriter和JFileChooser來設置保存目錄

目前,用戶可以從他們的計算機上的任何地方使用該代碼上傳的ACH文件:

JFileChooser chooser = new JFileChooser(); 
     FileNameExtensionFilter filter = new FileNameExtensionFilter("ACH Files", "ach"); 
     chooser.setFileFilter(filter); 
     chooser.setDialogTitle("Please choose ACH file to upload"); 
     int returnVal = chooser.showOpenDialog(chooser); 
     chooser.setCurrentDirectory(null); 
     if(returnVal == JFileChooser.APPROVE_OPTION) 
     { 

在程序緩存的讀/寫器之後進行編輯的文件,然後將其保存到新使用此代碼的位置:

br = new BufferedReader(new FileReader(chooser.getSelectedFile())); 
bw = new BufferedWriter(new FileWriter(chooser.getCurrentDirectory()+"//NachaOutput.ACH")); 

最後,用戶被告知文件名,並使用此代碼保存位置:

JOptionPane.showMessageDialog(null, "Output file saved as NachaOutput.ach to " + chooser.getCurrentDirectory()); 

如您所見,新文件被保存到文件從其上傳的同一目錄中。我的經理要求我允許用戶選擇一個目錄來保存新文件。 (文件名不重要,也不需要由用戶設置,僅限於目錄)。

我試過並試圖研究如何做到這一點,無濟於事。我發現的唯一指南非常冗長,我承認對我來說太複雜了。我試圖創建一個新的JFileChooser並允許用戶只設置目錄,並使用代碼:

int saveVal = chooser2.showSaveDialog(chooser2); 

不過,我發現,當我嘗試後拉保存的目錄是這樣的:

bw = new BufferedWriter(new FileWriter(chooser2.getCurrentDirectory()+"//NachaOutput.ACH" 

該文件保存到我的電腦標準目錄。 (C://用戶或其他影響的東西)。

有沒有一種基本的方法,我可以給用戶一個簡單的輸入來選擇一個目錄,然後在上面顯示的行上使用它與bw?

在此先感謝。

回答

1

有沒有辦法,我可以給用戶一個簡單的輸入 一種基本的方法選擇一個目錄

做到這一點的基本方法是:

JFileChooser chooser = new JFileChooser(); 
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 

其餘的也許不是這顯而易見(你必須要求所選的文件才能獲得目錄):

int returnVal = chooser.showDialog(chooser, "Directory to save"); 
if (returnVal == JFileChooser.APPROVE_OPTION) { 
    System.out.println(chooser.getSelectedFile()); 
} 
+0

謝謝如此非常!今天早上我花了不少時間,至少兩個小時。 你是100%正確的,爲什麼它不適合我。問題是我使用.getSelectedDirectory而不是.getSelectedFile。它現在完美。 再次感謝! – jesric1029