0

チェックサム生成アプリケーションを開発しています。今のところ、文字列値の SHA/MD5 出力を提供するように設計しました。ファイルをインポートして、インポートしたファイルのハッシュ値を作成することにより、整合性チェッカーとしても機能できるかどうかを知りたいです。ありがとう。

4

3 に答える 3

1

このようなものを探していますか

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);

あなたも使うことができますJFileChooser

于 2013-06-29T11:31:07.213 に答える
0

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);
于 2013-06-29T11:45:19.550 に答える
0

ファイルを処理するには、次のようなものが必要だと思います。

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 を使用してタスクを完了する方法も示します。

于 2013-06-29T11:58:52.290 に答える