黑马程序员技术交流社区

标题: 关于第22天迷你记事本的保存功能 [打印本页]

作者: 李铁    时间: 2012-10-5 22:50
标题: 关于第22天迷你记事本的保存功能
本帖最后由 李铁 于 2012-10-20 23:07 编辑

  sitem.addActionListener(new ActionListener() {
   @Override
   public void actionPerformed(ActionEvent e) {
    //这里只是对空白的目录,但是如果我要判断当前目录是不是已经打开的文件目录,也就是说实现打开已有文件修改然后保存的时候不再提示“保存”对话框;该怎么做呢?
    if (file == null) {
     sf.setVisible(true);
     // 因为要写到文件中,所以从对话框中获取文件
     String path = sf.getDirectory();
     String filename = sf.getFile();
     if (path == null || filename == null)
      return;
     file = new File(path, filename);
     // 将文本框的字符写入文件
     try {
      // 创建字符输入流
      BufferedWriter bw = new BufferedWriter(new FileWriter(
        file));
      // 获取文本框中的字符
      String str = ta.getText();
      // 写入
      bw.write(str);
      // bw.flush();
      // 关闭流
      bw.close();
     } catch (Exception e2) {
      new RuntimeException("写入失败");
     }
    }
   }
  });
大家帮帮忙,谢谢了!

作者: 李铁    时间: 2012-10-20 10:05
把“保存”功能的file局部变量也放到类变量中,就行了!如下:
oitem.addActionListener(new ActionListener() {
                        /*
                         * 读取文件内容显示到文本域中 思路: 1
                         * 通过getDirectory(),getFile方法获取文件的路径,判断是否为空(因为用户有时点取消);如果为空则不做任何动作。
                         * 2 创建字符输入流与文件相关联 3决断是否读到行未尾,如果读到行未尾,将该字符串添加到文域中 4关闭流
                         */
                        @Override
                        public void actionPerformed(ActionEvent e) {

                                of.setVisible(true);
                                String path = of.getDirectory();
                                String fileName = of.getFile();
                                // System.out.println(path+"....."+fileName);
                                // 当用户点取消就会报空指针异常,所以要判断
                                if (path == null || fileName == null)
                                        // 如果为空不做任何动作
                                        return;
                                // 文域设置为空
                                ta.setText("");
                                // 封装成文件
        //File file = new File(path, fileName);//这样做当执行完后,就不能保存“打开”事件所对应的文件的目录,需要把它定义给类变量
           //在类中定义类变量
           File file ;
                //再把上面的修改成
         file = new File(path, fileName);
                               
                                // 创建输入流
                                BufferedReader br = null;
                                try {
                                        br = new BufferedReader(new FileReader(file));
                                        String line = null;
                                        while ((line = br.readLine()) != null)
                                                ta.append(line + "\r\n");
                                } catch (Exception e1) {
                                        new RuntimeException("读取失败");
                                }
                        }
                });

版主给我加技术分呀,谢谢!




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