gpt4 book ai didi

java 读取文件 ---- 为什么我的代码有效

转载 作者:行者123 更新时间:2023-11-30 08:07:01 25 4
gpt4 key购买 nike

我是 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()

正如您在规范中看到的,读取方法“从该输入流读取一个字节数据”,这意味着程序中的所有整数(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<0”也永远不会被打印。

当然只有最后一个 int 会是 -1。

因此,<0, 255> 范围内的每个 int 都可以安全地转换为 char,而不会丢失任何信息。

关于java 读取文件 ---- 为什么我的代码有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30955980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com