1

ファイル(.txt)内のすべての単語のハッシュコードを生成できるようにループする方法を教えてください。私はすでにファイルの単一のハッシュコードを生成することができます。

指定されたループは、テキストドキュメント内の単語を読み取って取り出します。しかし、でハッシュキーの生成をループすることはできません。

public static void main(String[] args) throws NoSuchAlgorithmException, IOException { 

  JFileChooser chooser=new  JFileChooser();
  int returnVal = chooser.showOpenDialog(null);
  if (returnVal == JFileChooser.APPROVE_OPTION) {
    File f = chooser.getSelectedFile();
  }
  FileInputStream fin = new FileInputStream(chooser.getSelectedFile());
  DataInputStream din = new DataInputStream(fin);    
  BufferedReader br = new BufferedReader(new InputStreamReader(din)); 

  ArrayList<String> list = new ArrayList<String> ();
  MessageDigest md = MessageDigest.getInstance("MD5");

  String currentLine;
  byte[] buf = new byte[8192];

  int len = 0;
  while ((currentLine = br.readLine()) != null) {
    list.add(currentLine);
    md.update(buf, 0, len);
    System.out.println(currentLine);
  }
  br.close();

  byte[] bytes = md.digest();

  StringBuilder sb = new StringBuilder(2 * bytes.length);
  for (byte b : bytes) {
    sb.append("0123456789ABCDEF".charAt((b & 0xF0) >> 4));
    sb.append("0123456789ABCDEF".charAt((b & 0x0F)));
  }
  String hex = sb.toString();

  System.out.println (buf);
  System.out.println(sb);
}
4

3 に答える 3

1

高い場合は、以下の手順に従ってください。

  1. 行ごとに読みます。
  2. あなたがsplitそれを\\s+(スペース)に並べたら。
  3. これで、すべての単語が配列され、それを繰り返します。
  4. 文字列(単語)の呼び出しごとにword.hashCode()
于 2012-08-08T10:21:41.363 に答える
1

このようなトークナイザーを使用してみてください:

StreamTokenizer tokenizer = new StreamTokenizer(new FileReader("yourFilePath.txt"));
tokenizer.eolIsSignificant(false);
int token = tokenizer.nextToken();
while (token != StreamTokenizer.TT_EOF) {
    if (token == StreamTokenizer.TT_WORD) {
        System.err.println(tokenizer.sval.hashCode()); // here use any hash method you like
    }
    token = tokenizer.nextToken();
}
于 2012-08-08T10:43:18.763 に答える
0

ファイル内のすべての行のリストを生成しますが、これは使用していないように見えます。空白で各行を分割して、ファイル内のすべての単語のリストを生成する必要があるかもしれません。

for (String word : currentLine.split("\\s+")) {
  list.add(word);
}

次に、このリストを使用して、各単語のハッシュのリストを作成できます。

List<byte[]> hashes = new ArrayList<byte[]>(list.size());
for (String word : list) {
  md.reset();
  hashes.add(md.digest(word));
}
于 2012-08-08T10:27:53.347 に答える