我将使用JTetArea自己的write方法,因为这将使写入文件变得容易,并将很好地处理所有换行。例如(并借用您的代码):
public class TextEditor extends Jframe { int count = 2; Jtextarea n = new Jtextarea(); final JFileChooser fc = new JFileChooser(); public void SaveAs() { final JFileChooser SaveAs = new JFileChooser(); SaveAs.setApproveButtonText("Save"); int actionDialog = SaveAs.showOpenDialog(this); if (actionDialog != JFileChooser.APPROVE_OPTION) { return; } File fileName = new File(SaveAs.getSelectedFile() + ".txt"); BufferedWriter outFile = null; try { outFile = new BufferedWriter(new FileWriter(fileName)); n.write(outFile); // *** here: *** } catch (IOException ex) { ex.printStackTrace(); } finally { if (outFile != null) { try { outFile.close(); } catch (IOException e) { // one of the few times that I think that it's OK // to leave this blank } } } }}您的代码中有一些错误。例如,这可行
import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.io.*;import javax.swing.*;import javax.swing.filechooser.FileNameExtensionFilter;@SuppressWarnings("serial")public class TextEditor extends Jframe { int count = 2; Jtextarea textarea = new Jtextarea(10, 30); final JFileChooser fc = new JFileChooser(); public TextEditor() { add(new JScrollPane(textarea)); add(new JPanel(){{add(new JButton(new AbstractAction("Save As") { @Override public void actionPerformed(ActionEvent arg0) { saveAs(); } }));}}, BorderLayout.SOUTH); } public void saveAs() { FileNameExtensionFilter extensionFilter = new FileNameExtensionFilter("Text File", "txt"); final JFileChooser saveAsFileChooser = new JFileChooser(); saveAsFileChooser.setApproveButtonText("Save"); saveAsFileChooser.setFileFilter(extensionFilter); int actionDialog = saveAsFileChooser.showOpenDialog(this); if (actionDialog != JFileChooser.APPROVE_OPTION) { return; } // !! File fileName = new File(SaveAs.getSelectedFile() + ".txt"); File file = saveAsFileChooser.getSelectedFile(); if (!file.getName().endsWith(".txt")) { file = new File(file.getAbsolutePath() + ".txt"); } BufferedWriter outFile = null; try { outFile = new BufferedWriter(new FileWriter(file)); textarea.write(outFile); } catch (IOException ex) { ex.printStackTrace(); } finally { if (outFile != null) { try { outFile.close(); } catch (IOException e) {} } } } private static void createAndShowGui() { TextEditor frame = new TextEditor(); frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); frame.pack(); frame.setLocationByPlatform(true); frame.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGui(); } }); }}


