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