Я пытаюсь скопировать файл, используя следующий код:
1:
int data=0;
byte[] buffer = new byte[4096];
while((data = bufferedInputStream.read())!=-1){
bufferedOutputStream.write(data);
}
2:
byte[] buffer = new byte[4096];
while(bufferedInputStream.read(buffer)!=-1){
bufferedOutputStream.write(buffer);
}
Фактический размер файла 3892028 байт(на окнах).Файл будет загружен пользователем thro struts2 fileupload.Размер загружаемого файла точно такой же, как у Windows.Когда я пытаюсь скопировать загруженный файл из временной папки, размер копируемого файла изменяется, а время, которое требуется, также различается (это незначительно).Пожалуйста, найдите показания ниже.
Without using buffer(Code 1)
Time taken 77
3892028
3891200
Buffer size 1024(Code 2)
Time taken 17
3892028
3891200
Buffer size 4096(Code 2)
Time taken 18
3892028
3891200
Buffer size 10240(Code 2)
Time taken 14
3892028
3901440
Buffer size 102400(Code 2)
Time taken 9
3892028
3993600
Если я увеличу размер буфера еще больше, затраченное время увеличится, опять же, оно будет незначительным.Итак, мои вопросы:
- Почему размер файла изменяется?
- Есть ли какие-либо тонкие последствия из-за этого изменения размера?
- Каков наилучший способ реализовать эту функцию (копирование файла)?
Я не знаю, что происходит ниже?Спасибо за любое предложение. Редактировать: У меня есть вызовы методов flush () и close (). Примечание: Я сократил свой код, чтобы сделать его проще.