//打开文件的实现
final JMenuItem openMenuItem = new JMenuItem();
openMenuItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) //打开文件窗口创建
            {
                FileDialog fd=new FileDialog(f,"Open",FileDialog.LOAD);
                fd.setVisible(true); //启动
                String strFile=fd.getDirectory()+fd.getFile();
                if(fd.getFile()!=null)    //判断是否选择文件
                {
                    try
                    {
                     f.setTitle(fd.getFile()+" - 记事本"); //打开文件后窗口显示文件名称
                     content.setText(""); //把内容清空
                        FileInputStream fis = new FileInputStream(strFile);
                        byte[] bt = new byte[10 * 1024];
                        int len = fis.read(bt);
                        content.setText(new String(bt,0,len));
                        fis.close();
                    }
                    catch(Exception ex)
                    {
                        ex.toString();
                    }
                }
            }
});
openMenuItem.setText("打开(O)        Ctrl+O");
openMenuItem.setFont(font);
fileMenu.add(openMenuItem);

//保存文件的实现
final JMenuItem preservationMenuItem = new JMenuItem();
preservationMenuItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) //保存文件窗口创建
            {
                FileDialog fd=new FileDialog(f,"Open",FileDialog.SAVE);
                fd.setVisible(true); //启动
                String strFile=fd.getDirectory()+fd.getFile();
            
                if(strFile!=null)
                {
                    try
                    {
                        FileOutputStream fos=new FileOutputStream(strFile);
                        BufferedOutputStream bos=new BufferedOutputStream(fos);
                        String strContent=content.getText(); //获取文本内容
                 bos.write(strContent.getBytes());
                 bos.flush(); //刷新
                 bos.close();
                 fos.close();
                    }
                    catch(Exception ex)
                    {
                        ex.toString();
                    }
                }
            }
});
preservationMenuItem.setText("保存(S)        Ctrl+S");
preservationMenuItem.setFont(font);
fileMenu.add(preservationMenuItem);小弟在做记事本程序,以上是开打文件和另存为的实现,我想问的是能否实现真正意义上的保存的功能,就是说,假如我打开a.txt文件,我点保存就可以直接保存,不需要像另存为一样又出来一个对话框选择路径。现在问题就是打开文件的路径不知道如何获得,打开文件的时候strFile是文件的路径,不知道保存的时候能否就调用这个,怎么调用这个变量,或者有其他的方法也请高手们说下,小弟感激不尽。应该明白小弟问题的意思吧

解决方案 »

  1.   

    FileDialog fd=new FileDialog(f,"Open",FileDialog.LOAD);
    把这句话放在 方法外面定义成对象属性
    保存的时候不用 fd.setVisible(true);方法 不就不会弹出对话框了吗
      

  2.   

    FileInputStream fis = new FileInputStream(strFile);
    你这个读取文件的流 是怎么拿到的?
    能够读这个文件 为什么不能写他?
    上面的 strFile 难道不是当前文件的全路径?
    你要找的 已经在你手里了
      

  3.   

    一楼的方法我试了,好像不行,不用 setVisible(true)方法就启动不了。。二楼的也非常感谢,我意思可能你没明白,我是想直接保存文件,不弹出对话框,我写的代码是另存为,是可以用的,我想要实现直接保存,就是取不到文件路径
      

  4.   

    重新试了下,已经实现了,非常感谢一楼的大侠
    我忘记声明为final了,所以第一次没成功,感谢各位大侠。。