将文本从jTextArea保存(即另存为)到新的.txt文件中 [英] Save a the text from a jTextArea (ie Save As) into a new .txt file
本文介绍了将文本从jTextArea保存(即另存为)到新的.txt文件中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正忙于将文字处理程序作为我的项目之一,我需要将输入jTextArea的文本另存为.txt文件,并带有用户选择的名称和位置.注意"fc"是我已经声明的文件选择器的名称.
I am busy trying to make a word processor as one of my project and I need the text entered into the jTextArea to be saved as a .txt file with a name and location that the user chooses. note "fc" is the name of i file chooser i have already declared.
public class TextEditor extends javax.swing.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);
File fileName = new File(SaveAs.getSelectedFile() + ".txt");
try {
if (fileName == null) {
return;
}
BufferedWriter outFile = new BufferedWriter(new FileWriter(fileName));
outFile.write(n.getText()); //put in textfile
outFile.close();
} catch (IOException ex) {
}
}
推荐答案
我将使用JTetArea自己的write方法,因为这将使写入文件变得容易,并且可以很好地处理所有换行.例如(并借用您的代码):
I would use the JTetArea's own write method as this will allow easy writing to file and will handle all line feeds nicely. For example (and to borrow your code):
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
}
}
}
}
}
您的代码中存在一些错误.例如可行,
You've got some bugs in your code. For e.g. this works,
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();
}
});
}
}
这篇关于将文本从jTextArea保存(即另存为)到新的.txt文件中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文