A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗广伟 中级黑马   /  2013-7-15 12:41  /  878 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 罗广伟 于 2013-7-17 15:46 编辑

/*
* 菜单保存和打开文件功能
* 将File定义在成员变量中,可以供整个类使用,打开过就会进行记录
*/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class MenuDemo
{
        Frame f;
        TextArea ta;
        MenuBar mb;
        Menu menufile;
        MenuItem miopen;
        MenuItem misave;
        MenuItem miexit;
        
        Menu menuedit;
        Menu menuset;
        MenuItem migo;
        MenuItem miback;
        
        FileDialog fdopen=new FileDialog(f,"打开",FileDialog.LOAD);
        FileDialog fdsave=new FileDialog(f,"保存",FileDialog.SAVE);
        
        File file;
        
        MenuDemo()
        {
                init();
        }
        public void init()
        {
                f=new Frame("我的菜单");//设置窗体
                f.setBounds(300, 200, 500, 400);
                //f.setLayout(new FlowLayout());
                f.setVisible(true);
               
                ta=new TextArea();
               
                mb=new MenuBar();
               
                menufile=new Menu("文件");
                menuedit=new Menu("编辑");
                menuset=new Menu("修改");
               
                miopen=new MenuItem("打开");
                misave=new MenuItem("保存");
                miexit=new MenuItem("退出");
                migo=new MenuItem("还原");
                miback=new MenuItem("撤销");
               
                mb.add(menufile);
                mb.add(menuedit);
                menufile.add(miopen);
                menufile.add(misave);
                menufile.add(miexit);
                menuedit.add(menuset);
                menuset.add(migo);
                menuset.add(miback);
               
                fdopen.setBounds(300, 200, 400,300);
               
                f.setMenuBar(mb);
                f.add(ta);
               
                myEvent();
        }
        public void myEvent()
        {
                miopen.addActionListener(new ActionListener()//打开文件按钮
                {
                        public void actionPerformed(ActionEvent e)//将对话框读取文件存到TextArea中,
                        {
                                try
                                {
                                       
                                        fdopen.setVisible(true);
                                        String filepath=fdopen.getDirectory();
                                        String filename=fdopen.getFile();
                                        file=new File(filepath+filename);
                                        if(filepath==null||filename==null)
                                        {
                                                return;
                                        }
                                        ta.setText("");//再次打开文件清空
                                        BufferedReader bfr=new BufferedReader(new FileReader(file));
                                        String line;
                                        while((line=bfr.readLine())!=null)
                                        {
                                                ta.append(line+"\r\n");
                                        }
                                        bfr.close();
                                }
                                catch (FileNotFoundException e1)
                                {
                                        e1.printStackTrace();
                                }
                                catch (IOException e1)
                                {
                                        e1.printStackTrace();
                                }
                        }
                });
                misave.addActionListener(new ActionListener()//保存文件按钮
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                if(file==null)//如果文件没被打开则新建文件
                                {
                                        fdsave.setVisible(true);
                                        String filepath=fdsave.getDirectory();
                                        String filename=fdsave.getFile();
                                        file=new File(filepath+filename);//¥¥¥¥¥¥¥¥¥
                                }
                                //如果文件被打开则直接保存
                                try {
                                        BufferedWriter bfw=new BufferedWriter(new FileWriter(file));
                                        bfw.write(ta.getText());
                                        bfw.close();
                                } catch (IOException e1) {
                                        e1.printStackTrace();
                                }
                        }
                });
               
                miexit.addActionListener(new ActionListener()//退出按钮
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                System.exit(0);
                        }
                });
                f.addWindowListener(new WindowAdapter()//窗口关闭
                {
                        public void windowClosing(WindowEvent e)
                        {
                                System.exit(0);
                        }
                });
        }
        public void s(Object obj)
        {
                System.out.println(obj);
        }
        public static void main(String[] args)throws IOException
        {
                new MenuDemo();
         }
}
这段代码¥¥¥处,如果文件不存在就创建文件,那么问题是,文件中的数据

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

1 个回复

倒序浏览
还看到那里,不过看得懂呢还是其实还没有创建文件,只是创建了一个文件对象。这是里的作用只是先创建好这个文件对象,里面封装好了文件的路径和名字。然后给下面的输出流用。你也可以不创建这个文件对象,直接在下面的fileWriter里面传入路径和名字的字符串,但这样写比较专业点..

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马