Java를 이용하여 가지고 있는 파일 압축하기
1. java 프로젝트 생성
- Package Explorer 에서 마우스 오른쪽 클릭 후 new > Other
- Java Project 선택 후 Next
- Project Name명 입력 후 Finish 클릭
- 프로젝트 생성 후 화면
2. Java Class파일 생성
- /src 를 선택하고 마우스 오른쪽 버튼 클릭 후 new > Class
- Class 이름 설정, main method 생성 체크 > Finish
3. Zip 파일 압축 소스코드 생성
* 스트림(Stream)
: 자바에서는 파일이나 콘솔의 입출력을 직접 다루지 않고, 스트림(Stream) 이라는 흐름을 통해 다룬다.
스트림(Stream)이란 실제의 입력이나 출력이 표현된 이상화된(?) 흐름을 의미한다.
즉, 스트림은 중간 매개자 역할을 하는 가상의 연결고리이다.
※ Java SE 8 버전부터 추가된 스트림 API는 위 스트림과는 전혀 다른 개념입니다. 확인하세요.
* 입출력 스트림
: 스트림은 한 방향으로밖에 통신할 수 없으므로, 입력과 출력을 동시에 처리할 수 없다.
따라서 스트림은 목적에 따라 입력스트림과 출력스트림으로 구분할 수 있다.
자바에서는 java.io 패키지를 통해 InputStream과 OutputStream 클래스를 별도로 제공한다.
InputStream 클래스는 read() 메소드, OutputStream 클래스는 write() 메소드를 통해 입력 출력을 다룬다.
- ZipOutputStream : zip 파일을 생성하기 위해 출력스트림 사용
- FileInputStream : 파일을 바이트단위로 데이터를 읽어와 FileOutputStream을 통해 출력하기 위해 사용
- FileOutputStream : 파일을 바이트 단위로 출력하기 위해 사용
* ZipEntry
:Zip 파일은 GZip과 다르게 ZipEntry라는 객체를 사용한다.
Zip파일은 여러개의 파일을 압축할 수 있는데 이 파일 하나하나가 java.util.zip.zipEntory 라는 객체로
때문에 사용한다.
- 소스코드
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipCreateTest {
public static void main(String[] args) {
//압축할 파일 경로
String file_path = "C:\\Users\\admin\\Documents\\attach\\attach.html";
//생성할 zip 파일 경로 및 zip 파일명
String zip_create_path = "C:\\Users\\admin\\Desktop\\create.zip";
File file = new File(file_path);
int read;
int size = 1024;
byte[] buf = new byte[size];
ZipOutputStream zos = null;
FileInputStream fis = null;
try {
zos = new ZipOutputStream(new FileOutputStream(zip_create_path));
ZipEntry ze = new ZipEntry(file.getName());
zos.putNextEntry(ze);
fis = new FileInputStream(file);
while((read = fis.read(buf, 0, 1024)) != -1) {
zos.write(buf, 0, read);
}
fis.close();
zos.flush();
zos.closeEntry();
zos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
4. java 실행 후 zip 파일 생성 확인
- main 소스코드에서 마우스 오른쪽 버튼 클릭 > Run As > Java Application 실행
- 생성 확인
끝!