Czytam kod kogoś innego. Oto sedno tego.FileOutputStream vs ByteArrayOutputStream
Klasa kompresuje i dekompresuje pliki za pomocą GZIPInputStream i GZIPOutputStream.
Oto fragment informacji o tym, co dzieje się podczas kompresji. Są to instancje klasy File
.
FileInputStream fis = new FileInputStream(inputFile);
GZIPOutputStream gzos = new GZIPOutputStream(new FileOutputStream(outputFile));
//the following function copies an input stream to an output stream
IOUtils.copy(fis,gzos);
//outputFile is the compressed file
...
Oto, co dzieje się podczas dekompresji.
GZIPInputStream gzis = new GZIPInputStream(new FileInputStream(inputFile));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//copies input stream to output stream
IOUtils.copy(gzis,baos);
//this method does as its name suggests
FileUtils.writeByteArrayToFile(outputFile, baos.toByteArray());
//outputFile is the decompressed file
...
Co to możliwa przyczyna oryginalny programista wybrał FileOutputStream
podczas kompresji i dekompresji podczas ByteArrayOutputStream
? To mnie dezorientuje.
Jeśli nie ma dobrego powodu, myślę, że zmieniam je tak, aby były konsekwentne, aby uniknąć przyszłego zamieszania. Czy to dobry pomysł?
Czy IOUtils i FileUtils są odpowiednie lub z biblioteki typu commons-io? – sblundy
@blundy, są z bibliotek podobnych do commons-io. – Russell