컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Wednesday, October 25, 2006

자바 Java] CRC32 구하기 소스, 파일 CRC 값 계산 출력


옵션으로 지정해준 파일의 CRC32 값을 구하는 자바 소스입니다. 자바에 내장되어 있는 java.util.zip.CRC32 클래스로 값을 얻습니다. ZIP 이나 RAR에서 사용되는 CRC32 값과 동일한 값을 얻을 수 있습니다.

이 자바 프로그램으로, 675MB 크기 파일의 CRC32 를 구하는 데, 16초 걸렸습니다.

순수한 C로 작성된 CRC32 프로그램으로는 15초 걸렸습니다. 약간 차이는 있지만, 속도는 아주 빠릅니다.


JAVA: 파일의 CRC32 값 얻기 소스 코드


소스 파일명: GetCRC32.java
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
import java.io.*;
import java.util.zip.*;


public class GetCRC32 {
  public static void main(String args[]) {

    // 파일명을 옵션으로 주지 않으면 에러 내고 종료
    if (args.length != 1) {
      System.err.println("Usage: java GetCRC32 <input filename>");
      System.exit(1);
    }

    // CRC32 값과 파일명 화면에 출력
    System.out.format(
                               "%08X : %s%n",
                      getCRC32Value(args[0]),
                                     args[0]
                      );

  }




  public static long getCRC32Value(String filename) {
    Checksum crc = new CRC32();

    try {
      ////////////////////////////////////////////////////////////////////////////////
      BufferedInputStream in = new BufferedInputStream(new FileInputStream(filename));
      byte buffer[] = new byte[32768];
      int length = 0;

      while ((length = in.read(buffer)) >= 0)
        crc.update(buffer, 0, length);

      in.close();
      ////////////////////////////////////////////////////////////////////////////////
    } catch (IOException e) {
        System.err.println(e);
        System.exit(2);
    }
    return crc.getValue();
  }

}



컴파일 및 실행 결과:
D:\Z>javac GetCRC32.java

D:\Z>java GetCRC32 0.exe
FE4186B2 : 0.exe

D:\Z>

0.exe 라는 어떤 파일의 CRC32 값이 FE4186B2 라고 나오고 있습니다.


D:\Z>javac GetCRC32.java && java GetCRC32 "사본 - test.jpg"
6E17BBC0 : 사본 - test.jpg

D:\Z>

공백과 한글이 들어간 파일명도, 큰따옴표로 둘러싸 주면 잘 작동합니다.




tag: java
자바 | Java

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top