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
}


}

最佳答案

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

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

但是,无论如何,EOFException表示发生了错误,您不应忽略该错误,并且应该好像没有任何反应一样返回。

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

10-10 06:20