import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class FileDialogTest{
public static void main(String[] args){
//实例化各个组件
JFrame f = new JFrame("文件对话框测试");
JPanel p1 = new JPanel();
final TextArea ta = new TextArea(30,80);
ta.setEditable(true);
JButton btnOpen = new JButton("打开文件");
JButton btnSave = new JButton("保存文件");
//给打开按钮添加事件监听器
btnOpen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//为FileDialog准备新的frame
JFrame file_Open = new JFrame();
//实例化文件对话框为打开文件类型
FileDialog Open_Dialog = new FileDialog(file_Open,"打开文件",FileDialog.LOAD);
//设置文件对话框可见
Open_Dialog.setVisible(true);
//得到打开文件对话框中的路径字符串并赋值给path_Open
String path_Open = Open_Dialog.getDirectory();
//得到打开文件对话框中文件的文件名,并赋值给name_Open
String name_Open = Open_Dialog.getFile();
//定义一个FileReader,用来读取字符流,从而形成一个字符输入流
FileReader fr;
//定义一个BufferedReader, 用来从字符输入流中读取文本
BufferedReader br;
//定义一个String类型的字符串,赋值为空
String strOut="";
//程序有可能会出现异常,要用try-catch语句
try{
ta.setText("");
//将目标文件实例化成一个字符输入流
fr = new FileReader(path_Open+name_Open);
//将字符输入流实例化成一个BufferedReader
br = new BufferedReader(fr);
//当条件为真时,循环输入目标文件里每一行的字符串
while(strOut!=null){
//将BufferedReader中的输入给strOut
strOut = br.readLine();
//如果strOut等于null的时候,就停止读取
if(strOut == null)
break;
//将strOut字符串append到TextArea中的
ta.append(strOut+"/n");
//将strOut字符串输入到控制台
System.out.println(strOut);
}
}
catch(IOException err){}
}
});
//为保存文件按钮添加相应的事件监听器
btnSave.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//实例化一个Frame,为FileDialog做准备
JFrame file_Save = new JFrame();
//实例化一个文件对话框,并定义其为保存文件类型
FileDialog Save_Dialog = new FileDialog(file_Save,"保存文件",FileDialog.SAVE);
//设置文件对话框可见
Save_Dialog.setVisible(true);
//将保存文件对话框的路径字符串赋值给path_Save
String path_Save = Save_Dialog.getDirectory();
//将需要保存文件的文件名字符串赋值给name_Save
String name_Save = Save_Dialog.getFile();
//定义一个文件
File f;
//定义一个文件字符流
FileWriter fw;
//定义一个BufferedWriter
BufferedWriter bw;
//定义一个String类型的字符串
String strIn="";
//可能有异常抛出,用try-catch语句
try{
//将TextArea中的文本内容赋值给字符串strIn
strIn = ta.getText();
//实例化一个文件,并将文件路径和文件传进去
f = new File(path_Save+name_Save);
//真的创建一个目标文件,这时目标文件的内容为空
f.createNewFile();
//实例化一个写入字符流,
fw = new FileWriter(f);
//实例化一个写入字符流的BufferedWriter对象
bw = new BufferedWriter(fw);
//利用BufferedWriter的方法,将字符流写入到文件中
bw.write(strIn);
//刷新该流的缓冲
bw.flush();
//关闭BufferedWriter
bw.close();
//将字符输出到控制台
System.out.println(strIn);
}
catch(IOException err){}
}
});
//添加按钮到Panel
p1.add(btnOpen);
p1.add(btnSave);
//添加Panel 和 TextArea 到Frame中
f.add(p1,BorderLayout.NORTH);
f.add(ta,BorderLayout.SOUTH);
//设置Frame的关闭属性
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationByPlatform(true);
f.pack();
f.setVisible(true);
}
}//重点是 File,FileDialog,FileReader,FileWriter,BufferedReader,BufferedWriter的应用