Я хотел знать о различии между этими двумя блоками строк кодов.
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);
любые преимущества и недостатки для любого из них можно прояснить. Заранее спасибо.
FileTransfer
имеет несколько конструкторов, которые ожидают разные параметры.
В первом примере вызывается конструктор, который принимает содержимое в виде байтового массива (byte[]
).
Второй пример вызывает конструктор, который принимает InputStream
и будет считывать содержимое из переданного InputStream
.
Если ваш файл большой, очевидно, не использовать первый, потому что он требует, чтобы весь файл был прочитан в памяти.
Второй подход кажется лучше во всех случаях, за исключением случаев, когда вам также нужен контент для файла, тогда вам придется прочитать его дважды.
fileBytes
.