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

        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数组多余的零)

qq_杀意隆_0
浏览 1808回答 2
2回答

onemoo

我看到你还问了个相关的问题。那么这个问题也是同理:因为第一段程序中 buffer 中的元素是 byte 类型,所以数组中的数值就被当作 byte 类型被打印出来,也就是取值范围 -128 到 127。而第二段程序中是按照 int 来表示每个字节的,所以打印出的就都是不超过 255 的正数。

慕沐9307871

你采纳的答案是错的,注意看一下第二段代码,你每一次操作的时候读取了两次。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java