Для моего текущего проекта на работе мне было предложено добавить функцию в мою программу. В настоящее время программа позволяет пользователю загружать файл, который затем обрабатывается. После переформатирования файл сохраняется в новый файл .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 в строке, показанной выше?
Заранее спасибо.
Спасибо, ТАК, ТАК! Я потратил немало времени на то, что сегодня утром не менее двух часов. Вы были на 100% правильны и в том, почему он не работал для меня. Проблема заключалась в том, что я использовал .getSelectedDirectory, а не .getSelectedFile. Теперь он отлично работает. Еще раз спасибо! – jesric1029