我使用过这个主题:File to byte[] in Java 这是我的代码:
try {
Path path1 = Paths.get(path + fileName);
byte[] fileAsByte = Files.readAllBytes(path1);
System.out.println("Byte : " + fileAsByte.toString());
} catch (FileNotFoundException e) {
System.out.println("File Not Found.");
e.printStackTrace();
} catch (IOException e1) {
System.out.println("Error Reading The File.");
e1.printStackTrace();
} catch (OutOfMemoryError e3) {
System.out.println("Out of Memory");
e3.printStackTrace();
}
此代码不会触发任何异常,但输出仍为:
Byte : [B@60f17a2f
这对我来说似乎很无效。我很确定我做了一个愚蠢的错误,但我已经尝试解决这个问题已经有三个小时了,我可以用一些新鲜的眼睛来看它。
感谢。
答案 0 :(得分:4)
您不能将数组直接转换为String
并让人眼可读。它打印出[
(表示“数组”),然后是B
(对于byte
),然后是@
及其标识哈希码。
要获取数组中的字节列表,请改用静态Arrays.toString()
方法:
System.out.println("Byte : " + java.util.Arrays.toString(fileAsByte));
(如果字节代表输出字符串的字符,请使用@iTech的解决方案。)
答案 1 :(得分:4)
您应该创建一个使用String
初始化的byte[]
实例,例如
System.out.println("Byte : " + new String(fileAsByte));
您还可以指定编码,例如new String(fileAsBytes,"UTF-8");