当我将 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/