2015-09-22 5 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

 Смежные вопросы

  • Нет связанных вопросов^_^