[英]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.