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