[Java] File에 대한 Zip 압축

여러개의 파일들을 하나의 Zip 파일로 압축하는 자바 코드입니다.

String zipFileName = "c:/file.zip";

String[] files = new String[3];

files[0] = "c:/a.so";
files[1] = "c:/b.dat";
files[2] = "c:/c.cfg";
		
byte[] buf = new byte[4096];

try {
    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));

    for (int i=0; i<files.length; i++) {
        FileInputStream in = new FileInputStream(files[i]);
        Path p = Paths.get(files[i]);
        String fileName = p.getFileName().toString();
	        	
        ZipEntry ze = new ZipEntry(fileName);
        out.putNextEntry(ze);
	      
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
	      
        out.closeEntry();
        in.close();

    }
	      
    out.close();
} catch (IOException e) {
    e.printStackTrace();
}

a.so, a.dat, c.cfg 파일 세개를 file.zip으로 압축합니다. 특히, 19번 코드의 ZipEntry의 생성자의 인자에 경로가 들어갈 경우 압축 파일 내부에도 동일한 경로가 형성됩니다. 코드 최저화는 각자의 몫으로 남겨 둡니다.

참고로 위의 클래스들을 위해 필요한 import 문의 삽입을 위해 이클립스에서는 ^~O (Ctrl+Shift+O)를 입력하시면 됩니다.

건축물 용도별 전국 건물 SHP 파일 다운로드

대한민국, 전국의 약 천만개 이상 건물축에 대해서 용도별로 분류된 SHP 파일입니다. 용도별 270 종류 이상이며, 데이터 용량은 비압축시 약 4GB 이상입니다.

용도별 종류에 대한 구체적인 내용은 SHP 파일의 이름으로 명시하였으므로 다운로드 받아 살펴 보시기 바랍니다. 아울러 건축물에 대한 속성 정보는 아래와 같습니다.

좌표계는 UTM-K GRS80 타원체이며 .prj 파일은 다음과 같습니다.

PROJCS["PCS_ITRF2000_TM",GEOGCS["GCS_ITRF_2000",DATUM["D_ITRF_2000",
SPHEROID["GRS_1980",6378137.0,298.257222101]], PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],
PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",2000000.0],
PARAMETER["Central_Meridian",127.5],PARAMETER["Scale_Factor",0.9996],
PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]

자료의 출처는 안전행정부의 공개DB인 도로명주소 DB(2015년 6월자)입니다. 다운로드 URL은 아래와 같습니다.