为了账号安全,请及时绑定邮箱和手机立即绑定

FileInputStream的read()和read(byte[] b)得到的字节数组打印出来的数字为何不同?

FileInputStream的read()和read(byte[] b)得到的字节数组打印出来的数字为何不同?

qq_杀意隆_0 2018-04-26 09:16:05
        FileInputStream fileInputStream = new FileInputStream("test_dir/test_file.txt"); byte[] buffer = new byte[1024]; fileInputStream.read(buffer); for (byte b : buffer) { System.out.println(b); } fileInputStream.close();        FileInputStream fileInputStream = new FileInputStream("test_dir/test_file.txt");     int x; while((x=fileInputStream.read())!= -1) System.out.println(x); fileInputStream.close();上面2段代码输出的数字为何不同?(忽略byte数组多余的零)
查看完整描述

2 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

我看到你还问了个相关的问题。那么这个问题也是同理:

因为第一段程序中 buffer 中的元素是 byte 类型,所以数组中的数值就被当作 byte 类型被打印出来,也就是取值范围 -128 到 127。

而第二段程序中是按照 int 来表示每个字节的,所以打印出的就都是不超过 255 的正数。

查看完整回答
反对 回复 2018-04-26
?
慕沐9307871

TA贡献27条经验 获得超9个赞

你采纳的答案是错的,注意看一下第二段代码,你每一次操作的时候读取了两次。

查看完整回答
反对 回复 2018-04-26
  • qq_杀意隆_0
    qq_杀意隆_0
    哦哦,这个倒没注意到。不过你看我改正后,只要文件里含有中文字符,输出的仍然是不同的。
  • 2 回答
  • 0 关注
  • 1785 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信