2013-06-29 2 views
0

체크섬 생성기 응용 프로그램을 개발 중입니다. 지금은 SHA/MD5에 문자열 값을 출력하도록 설계되었습니다. 가져온 파일의 해시 값을 만들어 무결성 검사기로 사용할 수 있도록 파일을 가져올 수 있는지 알고 싶습니다. 감사합니다. .Java를 사용하여 파일을 가져 오는 단추 찾아보기

+1

* "파일을 가져올 수 있는지 알고 싶습니다."* 내 권한이 있습니다. –

답변

0

를 사용 JFileChooser

+0

와우, 아직 정확하게. 감사합니다 :) –

+0

한 번에 한 바이트 씩 파일을 읽는 것은 성능이 좋지 않습니다. Java 7-esque 접근법은'File.copy (Path, OutputStream)'을 사용하는 것이지만 간결하면서도 기본 플랫폼이 특정 성능 최적화를 수행 할 수 있도록합니다. – ntoskrnl

+0

"한 번에 1 바이트 씩 파일을 읽는 것은 성능면에서별로 좋지 않습니다."버퍼링 된 스트림을 사용하면 괜찮습니다. – Jk1

1

는 u는 당신이 또한 JFileChooser를

JFileChooser fileDlg = new JFileChooser(); 
    fileDlg.showOpenDialog(this); 
    String filename = fileDlg.getSelectedFile().getAbsolutePath(); 
    jTextField1.setText(filename); 

    FileInputStream fis = new FileInputStream(filename); 
    byte buffer[] = new byte[fis.available()]; 
    fis.read(buffer); 
    String message = new String(buffer); 
    jTextArea1.setText(message); 
0

를 사용할 수있는이

FileDialog fd = new FileDialog(parent, "Choose a file", FileDialog.LOAD); 
fd.setDirectory("C:\\"); 
fd.setFile("*.java"); 
fd.setVisible(true); 
String filename = fd.getFile(); 
if (filename == null) 
    System.out.println("file not selected"); 
else 
    System.out.println("You chose " + filename); 

처럼 뭔가를 찾고있다 당신이 파일을 처리하는 그런 일을 필요로한다고 가정

import org.apache.commons.codec.binary.Hex; 

import javax.swing.*; 
import java.io.*; 
import java.security.DigestInputStream; 
import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 

public class Application { 
    public static void main(String[] args) throws NoSuchAlgorithmException, IOException { 
     JFileChooser chooser = new JFileChooser(); 
     int result = chooser.showOpenDialog(null); 
     if (JFileChooser.APPROVE_OPTION == result){ 
      File file = chooser.getSelectedFile(); 
      MessageDigest digest = MessageDigest.getInstance("MD5"); 
      try (InputStream is = new FileInputStream(file)) { 
       DigestInputStream dis = new DigestInputStream(new BufferedInputStream(is), digest); 
       while (dis.read() != -1){} 
      } 
      JOptionPane.showMessageDialog(null, Hex.encodeHexString(digest.digest())); 
     } 
    } 
} 

요점은 파일이 상당히 클 수 있으므로 전체 파일 내용을 메모리로 읽지 않아야한다는 것입니다. 이 구현은 파일을 스트리밍하므로 많은 메모리가 필요하지 않습니다. 또한 JFileChooser를 사용하여 작업을 수행하는 방법을 보여줍니다.

+0

['JTextComponent.read (Reader, Object)'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/text/JTextComponent.html#read%28java.io)도 참조하십시오. Reader, % 20java.lang.Object % 29). –

관련 문제