gpt4 book ai didi

java - if ((i = fis.read()) != -1) 在这个程序中到底是什么意思?

转载 作者:行者123 更新时间:2023-12-01 14:06:28 25 4
gpt4 key购买 nike

package IO;
import java.io.*;
public class test {

public static void main(String[] args) throws IOException {
File f1 = new File("C:\\Users\\rs\\New folder\\myname.txt");
try {
FileInputStream fis = new FileInputStream(f1);
int i = fis.read();
System.out.print((char)i);
while((i = fis.read())!= -1) {
System.out.print((char) i );
}

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}

}
我是一个新的 Java 程序员,我在这段代码中遇到了麻烦。这段代码从我的文件 (f1) 中读取字节,我可以将这些字节转换为 char 并打印它们,但是这里有一些我不明白的东西以及它在我的 while 循环中的条件。它究竟意味着什么?我的意思是什么 if ((i = fis.read()) != -1)方法???第二个问题是为什么我们把 i = fis.read()在括号里???
我的文件中有一个文本(1 行)。

最佳答案

FileInputStream read()方法遵循这个逻辑:

Reads a byte of data from this input stream.This method blocks if no input is yet available.


该方法将 返回 :

The next byte of data, or -1 if the end of the file is reached.


所以 -1是它的标志 EOF查看。考虑到这一点,这个代码片段
while((i = fis.read())!= -1) 
System.out.print((char) i);

是说:
1 .分配 fis.read()到 var i 2a .如 i != -1 , 打印 ASCII char表示刚刚从输入流中读取的整数,并继续循环。
2b .如 i == -1 , 结束循环/停止阅读,因为它到达了文件末尾。

关于java - if ((i = fis.read()) != -1) 在这个程序中到底是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63091009/

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