2016-07-29 3 views
-1

Я пытался очистить данные в файле на моей локальной машине до ответа. Но в какой-то момент я получаю IndexOutOfBoundsException.Индекс из связанного исключения с данными входного потока

FileInputStream inputStream = new FileInputStream(downloadFile); 
OutputStream outStream = response.getOutputStream(); 
byte[] buffer = new byte[4096]; 
int bytesRead = -1; 
while ((bytesRead = inputStream.read(buffer, 0, 4096)) != -1) { 
    outStream.write(buffer, 0, bytesRead); 
} 
inputStream.close(); 
outStream.close(); 

Вышеупомянутый код - это то, что я пытался. Указанный путь downloadFile является правильным и работает до цикла while. Но затем происходит IndexOutOfBoundsException. Я попробовал это с inputStream.read(buffer), но это не сработало.

+0

какая строка вызывает «IndexOutOfBoundsException»? 'Read'? – Mureinik

+0

есть .. входной поток.продукт. Он не входит в цикл –

+4

Просьба показать полную трассировку стека. –

ответ

0

Дать код работает отлично; поскольку информация о объекте response не указана. У меня есть модификация OutputStream до FileOutputStream; просто чтобы проверить.

Ниже сегмент кода работает отлично.

public class Test 
{ 
    public static void main(String args[]) throws IOException 
    { 
     FileInputStream inputStream = new FileInputStream("C:\\readme.txt"); 
     FileOutputStream outputStream = new FileOutputStream("D:\\readme1.txt"); 
     //OutputStream outStream = response.getOutputStream(); 
     byte[] buffer = new byte[4096]; 
     int bytesRead = -1; 
     while ((bytesRead = inputStream.read(buffer, 0, 4096)) != -1) { 
      outputStream.write(buffer, 0, bytesRead); 
     } 
     inputStream.close(); 
     outputStream.close(); 
    } 
}