0

私はこの例に従います: http://www.mkyong.com/java/how-to-download-file-from-website-java-jsp

File file = new File("path/to/file/test.txt");
FileInputStream fis= new FileInputStream(file);
ServletOutputStream out = response.getOutputStream();

byte[] outputByte = new byte[4096];
//copy binary contect to output stream
while(fis.read(outputByte, 0, 4096) != -1)
{
    out.write(outputByte, 0, 4096);
}
fis.close();
out.flush();
out.close();

問題は、ダウンロード ファイルがまだ不完全であることです。ファイルの最後にまだいくつかの文字がありません

だから私は別の例を試します:

File file = new File("path/to/file/test.txt");
FileInputStream fis= new FileInputStream(file);


IOUtils.copy(fis,response.getOutputStream());
fis.close();

ファイルのダウンロードが完了しました。だから私の質問は、最初の例がうまくいかず、2番目の例が正しい理由です

4

2 に答える 2

1

から返される値InputStream.read()は重要です、それを使用してください!

于 2013-02-18T23:58:36.993 に答える
1

それが原因かどうかはわかりませんが、これを置き換えることができますか

//copy binary contect to output stream
while(fis.read(outputByte, 0, 4096) != -1)
{
    out.write(outputByte, 0, 4096);
}

int length=-1;
while ( (length = fis.read(outputByte, 0, 4096)) != -1) {
    out.write(outputByte, 0, length);
}

どうなるか教えてください。

于 2013-02-19T00:00:10.407 に答える