当文件路径中的空格时,程序无法正常工作

时间:2016-08-05 00:30:08

标签: java hash

我正在使用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重复。但是,在这种情况下,我不知道这个其他答案如何帮助我。如果有人可以向我解释如何使用这个单独的答案来修改我的问题,我将不胜感激。

非常感谢任何帮助解决这个问题,谢谢。

1 个答案:

答案 0 :(得分:0)

而不是:String input = inputScanner.next();

我能做到:String input = inputScanner.nextLine();

这允许读取空格。在this question中指出了解决方案。