我正在使用Java程序生成文件哈希。这是代码:
package main;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.nio.file.Files;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class File_Hash_Generator {
final protected static char[] hexArray = "0123456789ABCDEF".toCharArray();
public static String bytesToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
for (int j = 0; j < bytes.length; j++) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
public static void main(String args[]) throws IOException {
Scanner inputScanner = new Scanner(System.in);
String[] hashAlgos = { "MD2", "MD5", "SHA-1", "SHA-256", "SHA-384", "SHA-512" };
System.out.print("File Path: ");
String input = inputScanner.next();
input = input.replace("\"", "");
System.out.println();
try {
byte[] fileContents = Files.readAllBytes(new File(input).toPath());
for (String algo : hashAlgos) {
MessageDigest md = MessageDigest.getInstance(algo);
byte[] hash = md.digest(fileContents);
System.out.printf("%s %s%n", algo, bytesToHex(hash));
}
} catch (NoSuchAlgorithmException | IOException e) {
}
}
}
出于某种原因,当我进入文件或文件夹有空格的路径时,例如:
"C:\Users\User\Downloads\ToBeScanned\DAY N NIGHT.mp3"
程序无法正常运行,而是在没有生成任何哈希值的情况下终止。
编辑:提出我的问题与this question重复。但是,在这种情况下,我不知道这个其他答案如何帮助我。如果有人可以向我解释如何使用这个单独的答案来修改我的问题,我将不胜感激。
非常感谢任何帮助解决这个问题,谢谢。
答案 0 :(得分:0)
而不是:String input = inputScanner.next();
我能做到:String input = inputScanner.nextLine();
这允许读取空格。在this question中指出了解决方案。