这篇文章给大家了一个简易记事本Demo。主要介绍JAVA中打开文件和另存为文件的一种做法。用到Java Swing 和 IO的内容。
开始之前先介绍两个类
javax.swing.JFileChooser --JFileChooser 为用户选择文件提供了一种简单的机制;
主要用到这个类的两个方法:int showOpenDialog(Component parent)
弹出一个 "Open File" 文件选择器对话框。返回值是你的操作状态,比如说你点了确定或者取消按钮。
int showSaveDialog(Component parent)
弹出一个 "Open File" 文件选择器对话框。
javax.swing.filechooser.FileNameExtensionFilter--一个指定文件扩展名的过滤器。可以为JFileChooser 的过滤文件类型。
它的构造方法:FileNameExtensionFilter(String description, String... extensions)
使用指定的描述和文件扩展名创建一个 FileNameExtensionFilter
下面是例子:
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.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;
import javax.swing.filechooser.FileNameExtensionFilter;
public class NotePad extends JFrame implements ActionListener{
/**
* 简易记事本程序
*/
public static void main(String[] args) {
new NotePad();
}
JTextArea jta = null;
JMenuBar jmb = null;
JMenu jm = null;
JMenuItem jmi1 = null;
JMenuItem jmi2 = null;
public NotePad(){
jta = new JTextArea();
this.add(jta);
jmb = new JMenuBar();
jm = new JMenu("文件");
//这里还可以设置助记符,类似快捷键
//jm.setMnemonic('F');
this.setJMenuBar(jmb);
jmb.add(jm);
jmi1 = new JMenuItem("打开");
jmi1.addActionListener(this);
//设置ActionCommand,方便之后处理这个事件
jmi1.setActionCommand("open");
jmi2 = new JMenuItem("另存为");
jmi2.addActionListener(this);
jmi2.setActionCommand("save");
jm.add(jmi1);
jm.add(jmi2);
this.setTitle("记事本");
this.setSize(600, 400);
this.setLocation(400, 300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("open")) {
JFileChooser chooser1 = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"txt文件", "txt");
chooser1.setFileFilter(filter);
chooser1.setDialogTitle("选择一个文件");
//得到返回状态
int returnVal = chooser1.showOpenDialog(null);
chooser1.setVisible(true);
//如果你点了“取消”按钮。则不操作
if(returnVal == JFileChooser.CANCEL_OPTION){
return;
}
String filepath = "";
//得到所选文件的路径
filepath = chooser1.getSelectedFile().getAbsolutePath();
//文件IO操作
FileReader fr = null;
BufferedReader br = null;
try {
fr = new FileReader(filepath);
br = new BufferedReader(fr);
String s = "";
String allCon = "";
//一行一行的读
while((s=br.readLine()) != null) {
//添加换行符"\r\n"
allCon += s + "\r\n";
}
//向文本框添加内容
jta.setText(allCon);
} catch (Exception e1) {
e1.printStackTrace();
} finally {
//关闭资源
try {
fr.close();
br.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
} else if(e.getActionCommand().equals("save")) {
JFileChooser chooser2 = new JFileChooser();
chooser2.setDialogTitle("另存为");
//注意两个方法不同
int returnVal = chooser2.showSaveDialog(null);
chooser2.setVisible(true);
if(returnVal == JFileChooser.CANCEL_OPTION){
return;
}
String pathname = chooser2.getSelectedFile().getAbsolutePath();
FileWriter fw = null;
BufferedWriter bw = null;
try {
fw = new FileWriter(pathname);
bw = new BufferedWriter(fw);
String str = this.jta.getText();
System.out.println(str);
bw.write(this.jta.getText());
} catch (Exception e1) {
e1.printStackTrace();
} finally {
try {
bw.close();
fw.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
}