Разница между Byte [] и InputStream в FileTranfer (DWR)

1

Я хотел знать о различии между этими двумя блоками строк кодов.

 byte[] fileBytes = FileUtils.readFileToByteArray(new File(completeFilePath.toString()));
  ..
 return new FileTransfer(errorFileName, "application/vnd.ms-excel", is);

а также

 File csvFile = new File(completeFilePath.toString());
 InputStream is = new BufferedInputStream(new FileInputStream(csvFile));
 return new FileTransfer(errorFileName, "application/vnd.ms-excel", is);

любые преимущества и недостатки для любого из них можно прояснить. Заранее спасибо.

  • 0
    @Adi: спасибо Ади
  • 0
    Попробуйте отредактировать первую область кода и указать, где вы используете fileBytes .
Теги:
dwr

1 ответ

2
Лучший ответ

FileTransfer имеет несколько конструкторов, которые ожидают разные параметры.

В первом примере вызывается конструктор, который принимает содержимое в виде байтового массива (byte[]).

Второй пример вызывает конструктор, который принимает InputStream и будет считывать содержимое из переданного InputStream.

Если ваш файл большой, очевидно, не использовать первый, потому что он требует, чтобы весь файл был прочитан в памяти.

Второй подход кажется лучше во всех случаях, за исключением случаев, когда вам также нужен контент для файла, тогда вам придется прочитать его дважды.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню