apache.commons.compress  받는곳 

https://commons.apache.org/proper/commons-compress/download_compress.cgi

 

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
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.ZipInputStream;

import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;


public class ZipTest {

 public static void main(String[] args) throws Throwable {
  String path = "C:\\Users\\yuri\\Downloads\\commons-compress-1.16.1-bin\\commons-compress-1.16.1";
  //compress(path);
  decompress(path + "\\테스트.zip", path + "\\test");
 }

 /**
  * <pre>파일 압축하기</pre>
  * 파라메타 path가 폴더 이면 폴더 전체를 압축하고 파일경우는 파일만 압축
  * @param path
  * @throws IOException
  */
 public static void compress(String path) throws IOException {

  File file = new File(path);

  String files[] = null;

  // 파일이 디렉토리 일경우 리스트를 읽어오고
  // 파일이 디렉토리가 아니면 첫번째 배열에 파일이름을 넣는다.
  if (file.isDirectory()) {
   files = file.list();
  } else {
   files = new String[1];
   files[0] = file.getName();
   System.out.println(file.getName().getBytes());
  }

  // buffer size  int size = 1024;
  byte[] buf = new byte[size];

  String outZipNm = path + "\\테스트.zip";
  FileInputStream fis = null;
  ZipArchiveOutputStream zos = null;
  BufferedInputStream bis = null;

  try {

   // Zip 파일생성
   zos = new ZipArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(outZipNm)));

   for (int i = 0; i < files.length; i++) {

    // 해당 폴더안에 다른 폴더가 있다면 지나간다.
    if (new File(path + "/" + files[i]).isDirectory()) {
     continue;
    }

    // encoding 설정
    zos.setEncoding("UTF-8");

    // buffer에 해당파일의 stream을 입력한다.
    fis = new FileInputStream(path + "/" + files[i]);

    bis = new BufferedInputStream(fis, size);

    // zip에 넣을 다음 entry 를 가져온다.
    zos.putArchiveEntry(new ZipArchiveEntry(files[i]));

    // 준비된 버퍼에서 집출력스트림으로 write 한다.
    int len;

    while ((len = bis.read(buf, 0, size)) != -1) {
     zos.write(buf, 0, len);
    }

    bis.close();

    fis.close();

    zos.closeArchiveEntry();

   }

   zos.close();

  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } finally {

   if (zos != null) {
    zos.close();
   }

   if (fis != null) {
    fis.close();
   }

   if (bis != null) {
    bis.close();
   }

  }
 }

 /**
  * <pre>파일압축 해제</pre>
  *
  * @param zipFileName 압축파일명
  * @param directory 압축이 풀릴 파일 경로
  * @throws Throwable
  */
 public static void decompress(String zipFileName, String directory) throws Throwable {

        File zipFile = new File(zipFileName);
        FileInputStream fis = null;
        ZipInputStream zis = null;
        ZipEntry zipentry = null;

        try {

            //파일 스트림
            fis = new FileInputStream(zipFile);

            //Zip 파일 스트림
            zis = new ZipInputStream(fis);

            //entry가 없을때까지 뽑기
            while ((zipentry = zis.getNextEntry()) != null) {

                String filename = zipentry.getName();

                File file = new File(directory, filename);

                //entiry가 폴더면 폴더 생성
                if (zipentry.isDirectory()) {
                    file.mkdirs();
                } else {
                    //파일이면 파일 만들기
                    createFile(file, zis);
                }

            }

        } catch (Throwable e) {
            throw e;
        } finally {

            if (zis != null)
                zis.close();

            if (fis != null)
                fis.close();

        }

    }

 /**
  * <pre>파일 경로에 압축 푼 파일 생성</pre>
  *
  * @param file
  * @param zis
  * @throws Throwable
  */
 private static void createFile(File file, ZipInputStream zis) throws Throwable {

        //디렉토리 확인
        File parentDir = new File(file.getParent());

        //디렉토리가 없으면 생성하자
        if (!parentDir.exists()) {
            parentDir.mkdirs();
        }

        //파일 스트림 선언
        try (FileOutputStream fos = new FileOutputStream(file)) {

            byte[] buffer = new byte[256];
            int size = 0;
            //Zip스트림으로부터 byte뽑아내기
            while ((size = zis.read(buffer)) > 0) {
                //byte로 파일 만들기
                fos.write(buffer, 0, size);
            }

        } catch (Throwable e) {
            throw e;
        }

    }

}

 

참조 :

압축하기 : 출처: http://javacpro.tistory.com/21 [버물리의 IT공부]

압축 풀기 : http://nowonbun.tistory.com/321 [명월 일지]

'JAVA > Common' 카테고리의 다른 글

ArrayList 정렬 및 자르기  (0) 2016.03.07
형 변환 모음...  (0) 2015.05.28
인코딩 한방에 테스트 하기  (0) 2015.04.23
String.format()을 이용하여 Date 표현하기  (0) 2013.10.01

1. ArrayList 정렬

Collections sort(students, new Comparator<Student>() {
                    
public int compare(Student s1,Student s2) {
                          
if(s1.getName() != null && s2.getName() != null && s1.getName().comareTo(s1.getName()) != 0) {
                              
return s1.getName().compareTo(s2.getName());
                          
}
                         
else {
                            
return s1.getAge().compareTo(s2.getAge());
                         
}
                     
}
);

 

2. ArrayList 자르기

List<Integer> numbers = new ArrayList<Integer>(
       
Arrays.asList(5,3,1,2,9,5,0,7)
 
);
List<Integer> head = numbers.subList(0, 4);
List<Integer> tail = numbers.subList(4, 8);
System.out.println(head); // prints "[5, 3, 1, 2]"
System.out.println(tail); // prints "[9, 5, 0, 7]"
Collections.sort(head);
System.out.println(numbers); // prints "[1, 2, 3, 5, 9, 5, 0, 7]"
tail
.add(-1);
System.out.println(numbers); // prints "[1, 2, 3, 5, 9, 5, 0, 7, -1]"

'JAVA > Common' 카테고리의 다른 글

[JAVA] 압축 파일 생성 및 풀기  (0) 2018.05.03
형 변환 모음...  (0) 2015.05.28
인코딩 한방에 테스트 하기  (0) 2015.04.23
String.format()을 이용하여 Date 표현하기  (0) 2013.10.01

Dealing with nulls


    UtilFactory.convertNull


Java - comparing strings


    Use == for primitive data types like int
    If (mystring == null)


    Use the equals() method to compare objects
    Use .equals for strings : if (a.equals(“cat”))


Java - Converting int to string


    String myString = Integer.toString(my int value)     or
    String str = "" + i


Java - Converting String to int


    int i = Integer.parseInt(str);    
    or    
    int i = Integer.valueOf(str).intValue();          

 

double to String :


    String str = Double.toString(i);


long to String :


    String str = Long.toString(l);

 

float to String :


    String str = Float.toString(f);

 

String to double :


    double d = Double.valueOf(str).doubleValue();

 

String to long :


   long l = Long.valueOf(str).longValue();   or   long l = Long.parseLong(str);


String to float :


    float f = Float.valueOf(str).floatValue();


decimal to binary :


    int i = 42;
    String binstr = Integer.toBinaryString(i);


decimal to hexadecimal :


    int i = 42;
    String hexstr = Integer.toString(i, 16);
    or
    String hexstr = Integer.toHexString(i);    or
   
    (with leading zeroes and uppercase)    public class Hex {
        public static void main(String args[]){
            int i = 42;
            System.out.print(Integer.toHexString( 0x10000 | i).substring(1).toUpperCase());
        }
    }         


hexadecimal (String) to integer :


    int i = Integer.valueOf("B8DA3", 16).intValue();
    or
    int i = Integer.parseInt("B8DA3", 16);


ASCII code to String


    int i = 64;
    String aChar = new Character((char)i).toString();


integer to ASCII code (byte)


    char c = 'A';         
    int i = (int) c; // i will have the value 65 decimal


integer to boolean


    b = (i != 0);


boolean to integer


    i = (b)?1:0;

'JAVA > Common' 카테고리의 다른 글

[JAVA] 압축 파일 생성 및 풀기  (0) 2018.05.03
ArrayList 정렬 및 자르기  (0) 2016.03.07
인코딩 한방에 테스트 하기  (0) 2015.04.23
String.format()을 이용하여 Date 표현하기  (0) 2013.10.01
public class Javatest{
    public static void main(String args[]) {
        try{
            String charSet[] = {"utf-8","euc-kr","8859_1"};
            String fileName = "테스트";
            for(int i = 0; i < charSet.length; i++) {
                for(int j = 0; j < charSet.length; j++) {
                    System.out.println(charSet[i] + " to " + charSet[j] + " = " + new String(fileName.getBytes(charSet[i]),charSet[j]));
                }
            }
        }catch(Exception ex){
        }
    }
}
[출처] java 인코딩 테스트를 한번에 (한글깨졌을때, 한글깨짐..)|작성자 웹사이더


'JAVA > Common' 카테고리의 다른 글

[JAVA] 압축 파일 생성 및 풀기  (0) 2018.05.03
ArrayList 정렬 및 자르기  (0) 2016.03.07
형 변환 모음...  (0) 2015.05.28
String.format()을 이용하여 Date 표현하기  (0) 2013.10.01
String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tI:%1$tS", new Date());

  결과 : 2013-10-01 15:15:20

'JAVA > Common' 카테고리의 다른 글

[JAVA] 압축 파일 생성 및 풀기  (0) 2018.05.03
ArrayList 정렬 및 자르기  (0) 2016.03.07
형 변환 모음...  (0) 2015.05.28
인코딩 한방에 테스트 하기  (0) 2015.04.23

+ Recent posts