利用FileInputStream的read()方法读取文件时,读出的数据强制转换时用不同的写法,在控制台得出不同的显示。
出问题的写法:
正确输出的写法:
以下为两种输出,错误输出是输出一串数字,正确输出是把文件内容打印出来
已经知道那些数字是对应字母的ASCII码
我的疑问是:同样是强制转换,为什么两种写法的结果差异这么大?
强制转换写在外面,和直接作为print()的参数,有什么区别吗?是因为print()函数还有别的处理之类的吗?
环境为:jdk-1.8-8u144 + windows10
若以上信息不足,下列为完整代码
import java.io.*;
public class TestInputstream
{
public static void main(String[] args) {
FileInputStream in = null;
try
{
in = new FileInputStream("d:/计科学习/JavaPrj/IO/TestInputstream.java");
}
catch (FileNotFoundException e)
{
System.out.println("文件未找到");
e.printStackTrace();
System.exit(-1);
}
int data = 0;
try
{
data = in.read();
while((data!=-1))
{
//data = (char)data; //出问题的写法
System.out.print((char)data);
data = in.read();
}
in.close();
}
catch (IOException e)
{
System.out.println("文件读取失败");
System.exit(-1);
e.printStackTrace();
}
}
}