0

我使用过这个主题:Java 中的 File to byte[] 这是我的代码:

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

这对我来说似乎很无效。我很确定我犯了一个愚蠢的错误,但我已经尝试解决它三个小时了,我可以用一些新的眼光来看待它。

谢谢。

4

2 回答 2

4

您不能将数组直接转换String为人眼并使其可读。它正在打印[(意思是“数组”),然后B是(for byte),然后@是它的身份哈希码。

要获取数组中的字节列表,请改用静态Arrays.toString()方法:

System.out.println("Byte : " + java.util.Arrays.toString(fileAsByte));

(如果字节代表输出字符串的字符,请使用@iTech的解决方案。)

于 2013-02-12T04:31:12.610 回答
4

您应该创建一个String用您的实例初始化的实例byte[],例如

System.out.println("Byte : " + new String(fileAsByte));

您还可以指定编码,例如new String(fileAsBytes,"UTF-8");

于 2013-02-12T04:31:49.673 回答