第九章
2.一个文本,一个按钮。在文本区中输入数据,点击按钮,将文本内容输出到文件。文件通过文件保存对话框制定。
程序运行结果:
: SaveFile.java
保存文件的源文件import java.awt.*;
import java.awt.event.*; import javax.swing.*; import java.io.*; /**
* 9.2 一个文本,一个按钮。
* 在文本区中输入数据,点击按钮,将文本内容输出到文件。
* 文件通过文件保存对话框制定。
* @author 黎明你好 */
public class SaveFile extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;// 序列化时为了保持版本的兼容性 private JFileChooser fileChooser;// 文件选择对话框 private JPanel northPanel;// 布局用的 private JButton saveFileButton;// 保存按钮 private JLabel label;// 用来显示文件的绝对路径 private JTextArea textArea;// 文本框 public SaveFile() {
super(第九章,第二题 - 保存文件); label = new JLabel(?);
fileChooser = new JFileChooser(); northPanel = new JPanel();
saveFileButton = new JButton(保存到文件); textArea = new JTextArea(); textArea.setLineWrap(true); );
this.addActionListener(saveFileButton northPanel.add(saveFileButton);
this.add(northPanel, BorderLayout.NORTH);
this.add(new JScrollPane(textArea), BorderLayout.CENTER); this.add(label, BorderLayout.SOUTH);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setBounds(50, 50, 500, 500); this.setVisible(true); this.validate(); }
public void actionPerformed(ActionEvent e) // 监听器方法 {
if (e.getSource() == saveFileButton) {
int message = fileChooser.showSaveDialog(this); if (message == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
label.setText(保存到: + file.getAbsolutePath());// 在label上显示这个文件的绝对路径
this.setTitle(file.getName());// 设置JFrame的title为文件的名字 saveFile(file); } else {
label.setText(没有文件被选中); } } } /**
* 把文本区上的内容保存到指定文件上 * @param f - 保存到的文件对象 */
public void saveFile(File f) { try
{
FileWriter file = new FileWriter(f);
BufferedWriter out = new BufferedWriter(file); out.write(textArea.getText(), 0, textArea.getText().length()); out.close(); }
catch( Exception e ) {
label.setText(写文件发生错误); } }
public static void main(String[] args) {
new SaveFile(); } }
3.在一个文件中,每行存的是整数,各行整数个数不等,要求读这个文件,然后计算每行整数的和,并存到另一个文件中。
程序运行结果:
FileIntegerSum.java
计算文件中的整数和源文件:import java.awt.*;
import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.*; /**
* 9.3 在一个文件中,每行存的是整数,各行整数个数不等,
* 要求读如这个文件,然后计算每行整数的和,并存到另一个文件中。
* @author 黎明你好 * */
public class FileIntegerSum extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JButton buttonSave, buttonCount, buttonOpen;// 按钮:保存,计算,保存 private JTextArea textArea;//文本区
private JLabel label;//显示当前文件的绝对路径的label private JFileChooser filedialog;//文件选择对话框 private JPanel panel;//布局用的panel private File file = null;//文件对象
public FileIntegerSum() {
super(第九章,第三题 - 整数求和); buttonOpen = new JButton(打开文件); buttonSave = new JButton(保存到?尮); buttonCount = new JButton(计算结果); label = new JLabel(?); panel = new JPanel(); textArea = new JTextArea(); filedialog = new JFileChooser();
filedialog.addChoosableFileFilter(new MyFileFilter(瑜瑸)); buttonOpen.addActionListener(this); buttonSave.addActionListener(this);
buttonCount.addActionListener(this);// 给按钮加监控 panel.add(buttonOpen); panel.add(buttonCount);
panel.add(buttonSave);// 把按钮添加到panel面板上 this.add(panel, BorderLayout.NORTH); );
CENTER), BorderLayout.textArea JScrollPane(new.add(this this.add(label, BorderLayout.SOUTH); this.setBounds(50, 50, 500, 300); this.validate(); this.setVisible( true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); }
public void actionPerformed(ActionEvent e) {
if (e.getSource() == buttonOpen) {
filedialog.setDialogTitle( 打开);
int result = filedialog.showOpenDialog(this ); if (result == JFileChooser.APPROVE_OPTION) {
file = filedialog.getSelectedFile(); label.setText(\\ + file.getAbsolutePath()); readFiletoText(file); }
else if (result == JFileChooser.CANCEL_OPTION) label.setText(你没有选择任何文件屜屮); }
if (e.getSource() == buttonSave ) {
filedialog.setDialogTitle(另存为);
int result = filedialog.showSaveDialog(this); if (result == JFileChooser. APPROVE_OPTION) {
file = filedialog.getSelectedFile(); label.setText(\\ + file.getAbsolutePath()); saveAsText(file); }
else if (result == JFileChooser. CANCEL_OPTION) {
label.setText(你没有选择任何文件屜屮); } }
if (e.getSource() == buttonCount) {
textArea .setText(null); if (this.file != null) countResult( file); } } /**
* 将指定的文件显示在文本区上 * @param file - 指定的文件 */
public void readFiletoText(File file) { try {
FileReader file_reader = new FileReader(file); BufferedReader in = new BufferedReader(file_reader); String ss = new String();
while ((ss = in.readLine()) != null) {
textArea.append(ss + '\\n'); }
in.close(); }
catch( FileNotFoundException e2 ) {