我是Java新手。我正在学习fileIO。我正在编写一个小程序以在txt文件中显示内容。我的代码如下:
import java.io.*;
public class Readf {
public static void main(String arg[]) throws IOException {
FileInputStream in = null ;
try {
in = new FileInputStream("input.txt");
int c;
String cs="";
while ((c=in.read())!=-1) {
cs = cs + (char)c;
if ((char)c=='\n') {
System.out.println(cs);
cs="";
}
}
} finally {
if (in != null) {
in.close();
}
}
}
}
我正在阅读在线教程。它告诉我使用int变量读取文件。由于我想在char中显示内容,因此我将它们转换为char类型并将其存储在字符串中,并且可以正常工作!!!!在Java中,int变量是32位,而char变量是16位。每次读取32位int时,我都会将它们转换为16位char。为什么结果不是那么混乱?
最佳答案
检查FileInputStream类中的read()方法描述:
FileInputStream.read()
正如您在规范中所看到的,一种读取方法“从此输入流读取一个字节的数据”,这意味着程序中的所有int(c变量)将始终小于或等于255且大于或等于0。阅读txt文件或pdf,png等都没有关系。
您可以通过在c大于255时尝试打印一些内容来进行检查,例如:
if (c > 255) {
System.out.println("c>255");
}
和“ c> 255”将永远不会被打印。
因为int是带符号的,所以您还可以检查c是否小于零。
if (c < 0) {
System.out.println("c<0");
}
再次不会打印“ c
当然,仅最后一个int将为-1。
因此,可以将范围中的每个int安全地转换为char而不丢失任何信息。