写一个简单的记事本,学习IO流

来源:互联网 发布:保存文件安全数据 编辑:程序博客网 时间:2024/06/02 05:08

package com.test.notebook;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;

public class NotePad extends JFrame implements ActionListener{

 /**
  *我的记事本(界面+功能)
  * @param args
  */
 //定义需要的组件
 JTextArea jta = null;
 //定义菜单条
 JMenuBar jmb =null;
 //第一个menu
 JMenu jm1 =null;
 JMenuItem jmi1 = null;
 JMenuItem jmi2 = null;
 
 
 
 
 public static void main(String[] args) {
  NotePad n = new NotePad();
  
 }
 
 //构造函数
 public NotePad(){
  //创建jta
  jta = new JTextArea();
  jmb = new JMenuBar();
  jm1 = new JMenu("文件");
  //设置助记符
  jm1.setMnemonic('F');
  jmi1 = new JMenuItem("打开",new ImageIcon("new.gif"));
  //注册监听
  jmi1.addActionListener(this);
  jmi1.setActionCommand("open");
  
  
  
  
  jmi2 = new JMenuItem("保存",new ImageIcon("new.gif"));
  jmi2.addActionListener(this);
  jmi2.setActionCommand("save");
  //加入
  this.setJMenuBar(jmb);
  //把jm1放入jmb
  jmb.add(jm1);
  //把item放入Menu
  jm1.add(jmi1);
  jm1.add(jmi2);
  this.add(jta);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  this.setSize(800, 600);
  this.setVisible(true);
  
 }

 
 public void actionPerformed(ActionEvent e) {
  if(e.getActionCommand().equals("open")){
   //JFileChooser组件,选择
   JFileChooser jfcl = new JFileChooser();
   //设置名字
   jfcl.setDialogTitle("请选择文件....");
   jfcl.showOpenDialog(null);
   //显示
   jfcl.setVisible(true);
   //得到用户选择的绝对路径
   String fileName = jfcl.getSelectedFile().getAbsolutePath();
   //System.out.print(fileName);
   FileReader fr =null;
   BufferedReader br =null;
   
   try {
    fr = new FileReader(fileName);
    br = new BufferedReader(fr);
    //从文件中读取信息并显示列
    String s ="";
    String allCon ="";
    while( (s=br.readLine())!=null){
     allCon +=s+"\r\n";
     
    }
    //放置到Jta即可
    jta.setText(allCon);
   } catch (Exception e2) {
    
   }finally{
    try {
     fr.close();
     br.close();
    } catch (IOException e1) {
     // TODO Auto-generated catch block
     e1.printStackTrace();
    }
    
   }
  }
  
  
  if(e.getActionCommand().equals("save")){
   //出现保存对话框
   JFileChooser jfc = new JFileChooser();
   jfc.setDialogTitle("另存为....");
   //按默认的方式显示
   jfc.showSaveDialog(null);
   jfc.setVisible(true);
   
   //得到用户希望文件保存到何处
   String file = jfc.getSelectedFile().getAbsolutePath();
   //准备写入到指定文件即可
   FileWriter fw = null;
   BufferedWriter bw =null;
   try {
   fw= new FileWriter(file);
   bw= new BufferedWriter(fw);
   
   bw.write(this.jta.getText());
  
   
   } catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
   }finally{
    try {
     bw.close();
     fw.close();
     
    } catch (IOException e1) {
     
     e1.printStackTrace();
    }
    
   }
  }
 }
 
 

}