Java IO编程 学习笔记 (其二:简易记事本)

上次笔记重点说了FileInputStream与FileOutputStream(字节读写,以byte为单位),这两者用于处理字节文件。

类似的,应用比较广泛的还有FileReader、FileWriter(字节读写,以char为单位),BufferedReader、BufferedWriter(缓冲读写,以String为单位,构造时需要放入相应的FileReader、FileWriter)。

本文利用以上知识,写一个简易的记事本程序,具有保存与读取的功能。


package study2;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.io.*;

public class NodePad extends JFrame implements ActionListener{
	JTextArea jt=null;
	JMenuBar jmb=null;
	JMenu jm=null;
	JMenuItem save=null;
	JMenuItem open=null;

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		NodePad a=new NodePad();
	}

	public NodePad(){
		super();
		jt=new JTextArea();
		jmb=new JMenuBar();
		jm=new JMenu("File");
		jm.setMnemonic('f');
		save=new JMenuItem("Save");
		open=new JMenuItem("Open");
		
		this.add(jt);
		this.setJMenuBar(jmb);
		jmb.add(jm);
		jm.add(save);
		jm.add(open);
		
		save.addActionListener(this);
		open.addActionListener(this);
		save.setActionCommand("save");
		open.setActionCommand("open");
		
		this.setSize(400, 300);
		this.setTitle("记事本");
		this.setLocation(500, 300);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getActionCommand().equals("save")){
			//保存操作
			JFileChooser jfc=new JFileChooser();
			jfc.setDialogTitle("Save");
			jfc.showSaveDialog(this);
			jfc.setVisible(true);
			
			FileWriter fr=null;
			BufferedWriter bfr=null;
			
			try {
				fr=new FileWriter(jfc.getSelectedFile());
				bfr=new BufferedWriter(fr);
				
				bfr.write(jt.getText());
			} catch (Exception e2) {
				e2.printStackTrace();
			}finally{
				try {
					bfr.close();
					fr.close();
				} catch (Exception e3) {
					e3.printStackTrace();
				}
			}
		}else if(e.getActionCommand().equals("open")){
			//读取操作
			JFileChooser jfc=new JFileChooser();
			jfc.setDialogTitle("Load");
			jfc.showOpenDialog(this);
			jfc.setVisible(true);
			
			String fileName=jfc.getSelectedFile().getAbsolutePath();
			FileReader fr=null;
			BufferedReader bfr=null;
			
			try {
				fr = new FileReader(fileName);
				bfr = new BufferedReader(fr);
				String temp=new String();
				
				jt.setText("");
				while((temp=bfr.readLine())!=null){
					jt.setText(jt.getText()+temp+"\r\n");
				}
				
			} catch (Exception e2) {
				e2.printStackTrace();
			}finally{
				try {
					bfr.close();
					fr.close();
				} catch (Exception e3) {
					e3.printStackTrace();
				}
			}
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值