Трябва да прочета множество малки файлове и да ги добавя в един по-голям файл.
Base64OutputStream baos = new Base64OutputStream(new FileOutputStream(outputFile, true));
for (String fileLocation : fileLocations) {
InputStream fis = null;
try
{
fis = new FileInputStream(new File(fileLocation));
int bytesRead = 0;
byte[] buf = new byte[65536];
while ((bytesRead=fis.read(buf)) != -1) {
if (bytesRead > 0) baos.write(buf, 0, bytesRead);
}
}
catch (Exception e) {
logger.error(e.getMessage());
}
finally{
try{
if(fis != null)
fis.close();
}
catch(Exception e){
logger.error(e.getMessage());
}
}
}
Всичко е доста стандартно, но откривам, че освен ако не отворя нов baos за входен файл (включя го в цикъла), всички файлове след първия, написан от baos, са грешни (неправилен изход).
Въпросите:
- Казаха ми, че отварянето/затварянето на изходен поток напред и назад за един и същ ресурс не е добра практика, защо?
- Защо използването на един изходен поток не дава същия резултат като множество отделни?