2

我编写了一个 Java 程序,它使用 JFileChooser 打开所有类型的文件。然后我想用 JFileChooser 保存对话框将它保存在另一个目录中,但它只保存一个空文件。我可以做些什么来节省零件?

谢谢。

4

3 回答 3

8

JFileChooser 只返回 File 对象,您必须打开 FileWriter 并将内容实际写入其中。

例如

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

编辑:

假设您只有一个源文件和目标文件,并且想要在两者之间复制内容,我建议您使用Apache 的Commons IO中的FileUtils之类的东西来完成繁重的工作。

例如

FileUtils.copy(source, dest);

完毕!

于 2010-03-04T08:13:06.160 回答
2

除了Kris 的回答之外- 我猜,您还没有阅读文件的内容。基本上,您必须执行以下操作才能使用 java 并使用 JFileChooser 复制文件:

  1. 使用 FileChooser选择源文件。这将返回一个 File 对象,或多或少是文件文件名的包装类
  2. 使用带有 File 的 FileReader 来获取内容。将其存储在字符串或字节数组或其他东西中
  3. 使用 FileChooser选择目标文件。这再次返回一个 File 对象
  4. 使用带有目标文件的 FileWriter 将上面的字符串或字节数组存储到该文件中。

文件打开对话框不会将文件的内容读入内存——它只是返回一个代表文件的对象。

于 2010-03-04T08:35:32.600 回答
0

就像是..

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)
{ }
于 2012-04-04T11:45:40.973 回答