Это должно быть очень просто, и я искал Google, но не видел, чтобы кто-то упоминал проблему, которую я заметил. Все, что я видел, делает то же самое. Как это:Чтение из InputStream и запись в OutputStream
byte [] buffer = new byte[256];
int bytesRead = 0;
while((bytesRead = input.read(buffer)) != -1)
{
output.write(buffer, 0, bytesRead);
}
Я знаю, читал() возвращает -1, когда EOF будет достигнута, но что, если файл меньше, чем буфер или даже того же размера? Пример Fox, читается 200-байтный файл. Предполагаю, что он читает 200 байтов, но возвращает -1. Это соответствует javadocs, но это также означает, что write() никогда не вызывается. Я бы ожидал, что на самом деле скажу, что он читает 200 байт, а на следующей итерации - -1.
Как я могу обойти эту «проблему»?
Показать, как создается «input» и что происходит с ним перед этим вызовом 'read()'. – erickson
Как бы то ни было, этот вопрос «неполный». – erickson
Возможный дубликат [Легкий способ записи содержимого Java InputStream в OutputStream] (http://stackoverflow.com/questions/43157/easy-way-to-write-contents-of-a-java-inputstreamtoto -an-outputstream) – rds