为了账号安全,请及时绑定邮箱和手机立即绑定

Java 中什么时候会产生 IOException

Java 中什么时候会产生 IOException

ITMISS 2019-03-01 10:27:51
问题如题。下面我用一段简单代码来详述我的问题: package test; import java.io.*; /** * Created by clearbug on 2017/10/5. */ public class IOExceptionTester { public static void main(String[] args) throws FileNotFoundException { FileReader fileReader = new FileReader("/private/tmp/autosignin.log"); BufferedReader bufferedReader = new BufferedReader(fileReader); try { String line = bufferedReader.readLine(); System.out.println(line); } catch (IOException e) { System.out.println("Catch a IOException..."); e.printStackTrace(); } } } 测试代码如上。其中FileReader fileReader = new FileReader("/private/tmp/autosignin.log"); 可能会产生 FileNotFoundException 异常很容易理解;但是,为啥读取文件内容的时候即 String line = bufferedReader.readLine(); 会可能产生 IOException 呢?这里我在要读取的文件 /private/tmp/autosignin.log 是否为空均作了测试: 当文件不为空时,可以正常读取到文件中第一行的内容 当文件为空时,变量 line 为 null, 也没有异常产生 那么究竟什么时候会产生 IOException 异常呢?我看了下 BufferedReader.readLine() 方法的注释: /** * Reads a line of text. A line is considered to be terminated by any one * of a line feed ('\n'), a carriage return ('\r'), or a carriage return * followed immediately by a linefeed. * * @return A String containing the contents of the line, not including * any line-termination characters, or null if the end of the * stream has been reached * * @exception IOException If an I/O error occurs * * @see java.nio.file.Files#readAllLines */ public String readLine() throws IOException { return readLine(false); } 注释里说的是:当发生 I/O 错误时会产生 IOException 异常,那么究竟什么时候会产生 I/O 错误呢?
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

在读文件过程中,有很多种情况会产生异常,例如:

  • 磁盘损坏;
  • 实际上读的是远程文件、可移动介质,当资源不可用时,会产生异常;
  • 系统内部原因,如读取缓冲区占满、其他程序也在读写,导致读写超时;

所以捕获并处理异常是必要的。

查看完整回答
反对 回复 2019-03-01
  • 1 回答
  • 0 关注
  • 992 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号