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的应用