黑马程序员技术交流社区

标题: 关于毕老师记事本程序代码的一个小问题 [打印本页]

作者: "O_忆_O    时间: 2013-7-7 17:23
标题: 关于毕老师记事本程序代码的一个小问题
本帖最后由 杨兴庭 于 2013-7-8 21:07 编辑

在程序中保存的部分,当一开始文件不存在时,是哪一条语句创建了文件。程序中File f = new File(""),这个语句是不创建文件的,是Dialog.SAVE将系统的保存对话框显示出来后点保存按钮是否就是执行了createNewFile()从而创建了文件吗?

求解!!

作者: 赵乐    时间: 2013-7-7 23:32
本帖最后由 赵乐 于 2013-7-7 23:48 编辑
  1. <div class="blockcode"><blockquote>//这是毕老师源码,你的意思是不是文件不存在是,怎么创建了文件了么

  2. saveItem.addActionListener(new ActionListener()//这个是给保存键添加监听器
  3. {            
  4.         public void actionPerformed(ActionEvent e)
  5.         {
  6.                  if(file==null)<font color="red">  //判断文件是否存在
  7.                  {
  8.                           saveDia.setVisible(true);  <font color="red">//不存在就把保存的窗口弹出来

  9.                           String dirPath = saveDia.getDirectory();  //获取此文件对话框的目录
  10.                           String fileName = saveDia.getFile();   //获取此文件对话框的选定文件
  11.                           if(dirPath==null || fileName==null)  //判断你是否点击了取消按钮,就是什么都没选
  12.                                 return ; <font color="red">//如果你点击取消则什么都不做
  13.                           file = new File(dirPath,fileName); <font color="red"> //否则就把上面2个字符串作为参数创建文件对象
  14.                   }

  15.                   try
  16.                   {
  17.                          //下面就没什么好解释的了,就是IO的写入了// 另外 如果文件存在直接走的这里
  18.                           BufferedWriter bufw  = new BufferedWriter(new FileWriter(file));
  19.         

  20.                           String text = ta.getText();

  21.                           bufw.write(text);

  22.                           bufw.close();
  23.                   }
  24.                   catch (IOException ex)
  25.                   {
  26.                           throw new RuntimeException();
  27.                    }
  28.                                  
  29.          }
  30. });
复制代码

作者: 赵乐    时间: 2013-7-7 23:49
我就擦了,高级模式插入代码怎么  排列老是乱七八糟的,郁闷死  编辑N次,谁较较我,我老遇到这种问题
作者: "O_忆_O    时间: 2013-7-7 23:58
但是file = new File(dirPath,fileName)这一句应该是不会创建文件的啊?
作者: "O_忆_O    时间: 2013-7-7 23:59
赵乐 发表于 2013-7-7 23:32


但是file = new File(dirPath,fileName)这一句应该是不会创建文件的啊?
作者: taomingking    时间: 2013-7-8 00:07
看了你的问题之后,我仔细的看了一下我之前写过的记事本小程序的代码,创建文件的并不是你所说的保存按钮,而是下面的字符输出流缓冲区创建的文件,点了保存按钮,file就不为null,可以获取到路径和文件名,再把file传进字符流缓冲区,从而创建这个文件.
我把那段代码给你截取出来.
  1.                public void actionPerformed(ActionEvent e)
  2.                {
  3.                     //判断文件是否已经存在,不存在就弹出Filedialog
  4.                     if (file==null)
  5.                     {
  6.                          fd = new FileDialog(f,"save",FileDialog.SAVE);
  7.                          fd.setVisible(true);
  8.                          //如果点了Filedialog的取消,就直接结束
  9.                          if(fd.getDirectory()==null || fd.getFile()==null)
  10.                               return ;
  11.                          file = new File(fd.getDirectory(),fd.getFile());
  12.                     }
  13.                     try
  14.                     {
  15.                          BufferedWriter bw =
  16.                               new BufferedWriter(new FileWriter(file));//注意:这里才是创建文件!!!!!
  17.                          bw.write(ta.getText());
  18.                          bw.close();
  19.                     }
  20.                     catch (IOException ex)
  21.                     {
  22.                          throw new RuntimeException("创建文件失败");
  23.                     }
  24.                }
复制代码

作者: "O_忆_O    时间: 2013-7-8 00:20
taomingking 发表于 2013-7-8 00:07
看了你的问题之后,我仔细的看了一下我之前写过的记事本小程序的代码,创建文件的并不是你所说的保存按钮,而 ...

噢!应该就是这个地方。非常感谢!
作者: "O_忆_O    时间: 2013-7-8 00:22
赵乐 发表于 2013-7-7 23:32

你的解释也是对的,只是我get不到你的point。谢谢了
作者: 杨兴庭    时间: 2013-7-8 21:07

楼主您好,我已将您帖子的状态改成“已解决”,对此如有疑问可以通过QQ632763270和我取得联系

-------------------坚持学习,黑马因你而精彩---------------




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