сохранить файл с помощью диалогового окна сохранения JFileChooser - PullRequest
2 голосов
/ 04 марта 2010

Я написал программу на Java, которая открывает все виды файлов с помощью JFileChooser. Затем я хочу сохранить его в другом каталоге с помощью диалогового окна сохранения JFileChooser, но он сохраняет только пустой файл. Что я могу сделать для сохранения детали?

Спасибо.

Ответы [ 3 ]

8 голосов
/ 04 марта 2010

JFileChooser просто возвращает объект File, вам нужно открыть FileWriter и фактически записать в него содержимое.

* 1003 Е.Г. *

if (returnVal == JFileChooser.APPROVE_OPTION) {
   File file = fc.getSelectedFile();
   FileWriter fw = new FileWriter(file);
   fw.write(contents);
   // etc...
} 

Edit:

Предполагая, что у вас просто есть исходный файл и файл назначения и вы хотите скопировать содержимое между ними, я бы рекомендовал использовать что-то вроде FileUtils из Commons IO Apache для выполнения тяжелая атлетика.

* 1014 Е.Г. *

FileUtils.copy(source, dest);

Готово!

2 голосов
/ 04 марта 2010

Только в дополнение к ответу Криса - Я полагаю, вы еще не прочитали содержимое файла. Для копирования файла с использованием java и использования JFileChooser необходимо сделать следующее:

  1. Выберите файл source с помощью FileChooser. Это возвращает объект File, более или менее класс-оболочку для имени файла файла
  2. Используйте FileReader с файлом, чтобы получить содержимое. Сохраните его в строковом или байтовом массиве или что-то еще
  3. Выберите файл target с помощью FileChooser. Это снова возвращает объект File
  4. Используйте FileWriter с целевым файлом для хранения строкового или байтового массива сверху в этом файле.

Диалог открытия файла не считывает содержимое файла в память - он просто возвращает объект, представляющий файл.

0 голосов
/ 04 апреля 2012

Что-то вроде ..

File file = fc.getSelectedFile();
String textToSave = mainTextPane.getText();
BufferedWriter writer = null;

try
{
writer = new BufferedWriter( new FileWriter(file));
writer.write(textToSave);
JOptionPane.showMessageDialog(this, "Message saved. (" + file.getName()+")",
"ImPhil HTML Editer - Page Saved",
JOptionPane.INFORMATION_MESSAGE);
}
catch  (IOException e)
{ }
...