黑马程序员技术交流社区

标题: 求大神啊。记本事的保存功能如何实现。 [打印本页]

作者: 小周务商    时间: 2014-3-21 23:45
标题: 求大神啊。记本事的保存功能如何实现。
目前我只写了打开文件功能。但是保存功能我还没实现。真的是写不下去了。
保存功能在代码中央位置吧。我只写了一点点。
想不出法子。求大神给思路。。。。。。代码如下。

public class Demo3iFrame {

                //创建记事本窗体。
                JFrame frame =new JFrame("我的记本事");
               
                //菜单条
                JMenuBar menuBar =new JMenuBar();
               
                //菜单
                JMenu fileMenu =new JMenu("文件");
                JMenu helpMenu =new JMenu("帮助");
               
                //菜单项
                JMenuItem openItem =new JMenuItem("打开");
                JMenuItem saveItem =new JMenuItem("保存");
                JMenuItem exitItem =new JMenuItem("退出");
               
                //复选菜单
                JMenu editMenu =new JMenu("编辑");
                JMenu copyItem =new JMenu("复制");
                JMenu searchItem =new JMenu("查找");
               
                //文件对话框1.打开文件。2.保存文件。
                FileDialog fileDialog1 =new FileDialog(frame,"请选择打开文件",FileDialog.LOAD);
                FileDialog fileDialog2 =new FileDialog(frame,"请选择保存路径",FileDialog.SAVE);
               
                //关于
                JMenuItem aboutItem =new JMenuItem("关于");
               
                //文本域。
                JTextArea area =new JTextArea(40,30);
                       
                       
                public void init(){
                        frame.setBounds(500,150,500,400);
                        //把菜单添加到菜单条上
                        menuBar.add(fileMenu);
                        menuBar.add(helpMenu);
                       
                        //把菜单项添加到菜单上
                        fileMenu.add(openItem);
                        fileMenu.add(saveItem);
                        fileMenu.add(exitItem);
                        helpMenu.add(aboutItem);
                       
                        //给打开选项添加监听器
                        openItem.addActionListener(new ActionListener() {
                               
                                @Override
                                public void actionPerformed(ActionEvent e) {
                                        try {
                                                fileDialog1.setVisible(true);//显示出来
                                                String fileName =fileDialog1.getFile();//获取打开的文件名
                                                String path =fileDialog1.getDirectory();//获取打开的文件路径
                                                System.out.println("文件路径:"+path);
                                                System.out.println("文件名:"+fileName);                                                                                       
                                               
                                                File file =new File(path+fileName);//获取文件名和路径
                                                FileInputStream fileInputStream =new FileInputStream(file);       
                                                //读文件内容。
                                               
                                                byte[] buf =new byte[1024];
                                                int length =0;
                                                //边读边写。
                                                while((length= fileInputStream.read(buf))!=-1){
                                                        area.setText(new String(buf,0,length));
                                                        //把文件内容写到文本域。
                                                }
                                               
                                        } catch (Exception e1) {
                                               
                                                e1.printStackTrace();
                                        }
                                       
                                       
                                }
                        });
                        //添加退出事件。点击退出程序即时退出。
                        exitItem.addActionListener(new ActionListener(){
                               
                                public void actionPerformed(ActionEvent e) {
                       
                                        System.exit(0);
                                }
                        });
                       
                        //给保存添加事件
                        saveItem.addActionListener(new ActionListener() {
                               
                                @Override
                                public void actionPerformed(ActionEvent e) {
                                        try {
                                                fileDialog2.setVisible(true);//显示出来
                                                String fileName =fileDialog2.getFile();//获取文件名
                                                String path =fileDialog2.getDirectory();//获取保存路径
                                       
                                                File file =new File(path+fileName);//创建File对象。把文件名和路径传入
                                               
                                                FileOutputStream out =new FileOutputStream(file);//把File对象传给输出流
                                               
                                                byte[] buf2 =new byte[1024];
                                                int length2 =0;
                                                while((length2=????????)){
                                                       
                                                }
                                               
                                        } catch (FileNotFoundException e1) {
                                               
                                                e1.printStackTrace();
                                        } catch (IOException e1) {
                                               
                                                e1.printStackTrace();
                                        }
                                       
                                }
                        });
                       
                       
                        //复选菜单     菜单添加菜单。
                        fileMenu.add(editMenu);
                        editMenu.add(copyItem);
                        editMenu.add(searchItem);
                       
                        frame.add(area);
                        frame.add(menuBar,BorderLayout.NORTH);
                        frame.setVisible(true);
                        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                       
                }
        public static void main(String[] arge){
                Demo3iFrame d =new Demo3iFrame();
                d.init();               
        }
}



作者: 李猛    时间: 2014-3-22 12:57
保存其实就是一个复制的过程,就是把你文本里的文本复制到制定文件中的过程,你可以选择使用字节流或者是字符流,或者选用他们的缓冲区都行,只要在你的保存(MenuItem)的监听器中加流的复制就行了,你可以试试,不懂可以再问我
作者: 小周务商    时间: 2014-3-22 20:04
谢谢。我用缓冲区字符流已经搞定了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2