java - 发生 EOFException 时返回是否安全

标签 java inputstream

当我将 Inputstream 复制到 OutputStream 时,有时会出现 EOFException

来自EOFException的文档可以被数据输入流用来表示流结束。

那么这是否意味着发生 EOFException 时可以安全返回?

public static void copy(InputStream in, OutputStream out) throws IOException {

byte[] buff = new byte[BUF_SIZE];
int n = -1;

try {
  while ((n = in.read(buff)) >= 0) {
    out.write(buff, 0, n);
  }
} catch (EOFException eof) {
  // reach EOF , return
}

}

最佳答案

不能在InputStream.read(byte[])中抛出EOFException,其API表示“如果由于文件末尾以外的任何原因无法读取第一个字节......”,则抛出IOException。

EOFException 用于其他目的,例如。如果输入流在读取所有字节之前到达末尾,则 java.io.DataInputStream.readFully(byte[] b) 可能会抛出 EOFException。

但是,无论如何,EOFException 表明发生了错误,您不应该忽略它并像什么都没发生一样返回。

关于java - 发生 EOFException 时返回是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13971414/

相关文章:

java - 如何去掉小于一的 double 中小数点前的前导零?

java - 创建新的记录器

java - java中同时使用InputStream和InputStreamReader

java - 无法存储 ReadLine (bufferedReader) 中的值

java - InflaterInputStream/DeflaterOutputStream 的默认压缩

java - 在针对 Gingerbread 的应用程序中使用 ICS 函数

Java编译优化和性能

java - 在Java中打开URL获取内容

java - 将 BufferedInputStream 传递给接受 InputStream 的方法

java - 在android中将float转换为CharSequence?