Я загружаю файл с кодом ниже
public int copy(InputStream input, RandomAccessFile out) throws IOException,
NetworkErrorException {
if (input == null || out == null) {
return -1;
}
byte[] buffer = new byte[BUFFER_SIZE];
BufferedInputStream inputStream = new BufferedInputStream(input, BUFFER_SIZE);
if (DEBUG) {
Log.v(TAG, "length" + out.length());
}
int count = 0, n = 0;
long errorBlockTimePreviousTime = -1, expireTime = 0;
try {
out.seek(out.length());
while (!interrupt) {
n = inputStream.read(buffer, 0, BUFFER_SIZE);
if (n == -1) {
break;
}
out.write(buffer, 0, n);
count += n;
if (!NetworkUtils.isNetworkAvailable(context)) {
throw new NetworkErrorException("Network blocked.");
}
if (networkSpeed == 0) {
if (errorBlockTimePreviousTime > 0) {
expireTime = System.currentTimeMillis() - errorBlockTimePreviousTime;
if (expireTime > TIME_OUT) {
throw new ConnectTimeoutException("connection time out.");
}
} else {
errorBlockTimePreviousTime = System.currentTimeMillis();
}
} else {
expireTime = 0;
errorBlockTimePreviousTime = -1;
}
}
} catch (Exception socketExp) {
socketExp.printStackTrace();
// Log.d("Network Blocked"," "+NetworkUtils.isNetworkAvailable(context));
throw new NetworkErrorException("Network blocked.");
} finally {
if (client != null)
client.close(); // must close client first
if (urlConnection != null)
urlConnection.disconnect(); // must close client first
client = null;
urlConnection = null;
out.close();
inputStream.close();
input.close();
}
return count;
}
Загрузка работает нормально.Но иногда это вызывает исключение
EOFException: unexpected end of stream
, когда я пытаюсь прочитать байты из входного потока в этой строке
n = inputStream.read(buffer, 0, BUFFER_SIZE);
Может кто-нибудь объяснить мне, почему это происходит?