[java] OpenCSV를 사용하여 CSV 파일의 데이터를 임의로 압축하는 방법은?
먼저, OpenCSV 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml
파일에 다음 의존성을 추가합니다.
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.3</version>
</dependency>
CSV 파일의 데이터를 압축하기 위해 ZipOutputStream
클래스를 사용할 수 있습니다. 아래 예제 코드는 OpenCSV와 ZipOutputStream
를 사용하여 CSV 파일을 압축하는 방법을 보여줍니다.
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import com.opencsv.CSVReader;
import com.opencsv.CSVWriter;
public class CsvCompressionExample {
public static void main(String[] args) {
String inputFile = "input.csv";
String outputFile = "output.zip";
try (CSVReader reader = new CSVReader(new FileReader(inputFile));
ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(outputFile))) {
ZipEntry zipEntry = new ZipEntry("compressed.csv");
zipOutputStream.putNextEntry(zipEntry);
CSVWriter writer = new CSVWriter(new OutputStreamWriter(zipOutputStream));
String[] nextLine;
while ((nextLine = reader.readNext()) != null) {
writer.writeNext(nextLine);
}
reader.close();
writer.close();
zipOutputStream.closeEntry();
zipOutputStream.close();
System.out.println("CSV 파일이 성공적으로 압축되었습니다.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
위의 코드에서 input.csv
파일은 압축할 CSV 파일의 경로를 나타내며, output.zip
파일은 압축된 결과를 저장할 파일명입니다. ZipOutputStream
을 사용하여 압축 파일을 생성하고, CSVReader
와 CSVWriter
를 사용하여 CSV 파일의 데이터를 읽고 쓸 수 있습니다.
위의 예제 코드를 실행하면 input.csv
파일의 데이터가 compressed.csv
파일로 압축되어 output.zip
파일에 저장됩니다.
추가로, 예외 처리와 파일 핸들링 부분은 간단하게 처리되었으므로 실제 상황에 따라 수정해야 할 수 있습니다. 압축을 수행할 때 메모리 부하나 압축 성능에 대한 추가 설정이 필요한 경우, Java의 ZipOutputStream 및 OpenCSV의 문서를 참조하여 필요한 조정을 수행할 수 있습니다.