千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:重庆千锋IT培训  >  技术干货  >  针对文件I/O写入操作时的BUG修复

针对文件I/O写入操作时的BUG修复

来源:千锋教育
发布人:lxl
时间: 2023-03-22 11:53:23

  一. 异常问题

  I/O对于在Java学习路上的初学者来说,简直就是一道长长的坎儿。我们在使用I/O的过程中,会有许多的异常需要处理,并且其中还带有一系列的验证逻辑在其中。如果在学习过程中,我们的基础打得不牢靠,那么可能会由逻辑问题引发出一系列的异常。而这些类似的异常,从代码层面来检测是没有问题的,只是逻辑部分出现了问题。

  今天就以一个实际案例来给大家举例说明,下面是一段示例代码,看起来并没有什么问题。

图片13

  但运行上面的程序,却会出现如下异常:

图片14

  那么上面的异常该怎么解决呢?我们继续往下看。

  二. 解决思路

  异常原因

  首先查看异常信息:

  java.io.FileNotFoundException: d:\study\io\info.txt (系统找不到指定的路径。)

  从这里可以看出,上述异常是由于我们保存的路径存在问题,系统找不到这个路径。

  很多初学者看到这个信息可能会想,文件写入时不是会自动创建文件吗?怎么会找不到文件呢?凡是有此疑问的童鞋,说明你的I/O相关的基础知识有些薄弱。I/O流写文件时会有一个先决条件:保证父级目录一定存在!所以这里我们来查看一下,文件的父级保存路径是否存在。

1280X1280

  结果发现,父级目录确实不存在!所以问题就出在这里!

  说到这里,有的童鞋可能就会去手动创建目录,保证父级目录存在,这样做确实能够解决问题。

图片14

  再次运行测试,程序正常运行!

  解决办法

  那么我们是不是就这样将问题解决了呢?当然不是。这里需要注意的是:save是一个方法,可以被反复调用,传递的参数也可能发生变化。换句话说,保存的内容和保存的路径都是变化的。我们总不能一直手动的去创建父级目录来保证程序的正常运行吧,所以此时我们需要使用 File类的相关知识来解决该问题。

  根据上面的描述,我们只需要能够创建出父级目录即可,而 File 类刚好提供了这样的功能。

  File file = new File(path);//构建文件对象

  File parent = file.getParentFile();//获取父级目录

  if(!parent.exists()){//如果父级目录不存在

  parent.mkdirs();//创建目录

  }

  只要我们将上面的代码编写在save方法中,就可以保证父级目录的存在,即使该方法被重复调用,也依然可以保持正常运行,代码如下:

图片14

  然后我们可以再次更改路径,重新测试。

  public static void main(String[] args) {

  String msg = "写入一行内容";

  String path = "d:/study/io2/info.txt";

  save(path, msg);

  }

  再次运行,查看结果如下:

图片14

  序依然可以正常运行!至此,我们就把整个问题解决了!

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

java的输入语句—— Scanner类

2023-05-04

java数据库操作常识事务的四大特性

2023-05-04

DML数据操作之增加或删除数据

2023-05-04

最新文章NEW

socket是什么?有什么作用?

2023-05-04

Java常量定义是什么

2023-04-28

一分钟带你学多线程

2023-04-28

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>