다른 사람의 코드를 읽습니다. 여기에 그 요지가 있습니다.FileOutputStream 대 ByteArrayOutputStream
클래스는 GZIPInputStream 및 GZIPOutputStream을 사용하여 파일을 압축하고 압축을 해제합니다.
다음은 압축 중에 무슨 일이 일어나는지를 보여줍니다. inputFile
및 outputFile
은 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
...
이제는 압축 해제 중에 있습니다.
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
...
원래 프로그래머가 압축 해제시 압축시 FileOutputStream
및 ByteArrayOutputStream
을 선택 가능한 이유는 무엇입니까? 그것은 나를 혼란스럽게합니다.
좋은 이유가 있지 않는 한, 나는 그들이 미래의 혼란을 피하기 위해 일관성있게 바꾸고 있다고 생각합니다. 이것은 좋은 생각입니까?
IOUtils 및 FileUtils는 프리 솔리 티브입니까, 커먼스 - io와 같은 lib입니까? – sblundy
@sblundy, 그들은 commons-io 같은 라이브러리에서 왔습니다. – Russell