[英]Program doesn't work correctly when spaces in file path
我正在使用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"
该程序无法正常运行,而是仅终止而没有生成任何哈希。
编辑 :有人提出我的问题是这个问题的重复。 但是,在这种情况下,我不知道其他答案会对我有什么帮助。 如果有人可以向我解释如何使用此单独的答案来更改代码来解决我的问题,我将不胜感激。
非常感谢您提供任何解决此问题的帮助,谢谢。
而不是这样做: String input = inputScanner.next();
我可以做: String input = inputScanner.nextLine();
这样可以读取空格。 这个问题指出了解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.