2016-07-29 4 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'を引き起こしますか? '読み取り'? – Mureinik

+0

はい.. inputstream.read。それはループを入力しません –

+4

完全なスタックトレースを表示してください。 –

答えて

0

コードは完全に動作しています。 responseオブジェクトに関する情報は提供されていないため、OutputStreamFileOutputStreamに変更しました。テストするだけです。

以下のコードセグメントは完全に動作しています。

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(); 
    } 
} 
関連する問題