为什么输入与“-1”比较?
问题描述:
我刷新自己的I/O,而我去了我看到的东西,弄得我的示例代码:为什么输入与“-1”比较?
public class CopyBytes {
public static void main(String[] args) throws IOException {
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream("xanadu.txt");
out = new FileOutputStream("outagain.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
如何int值(C),可以被分配给数据从一个字节输入流(in.read())?那么为什么while循环等待它不等于-1?
答
这个(c = in.read())
将返回-1
当达到输入结束,因此while循环将停止。
阅读这个真棒answer。
从甲骨文文档:
public abstract int read()
抛出IOException读取数据的从输入流的下一个字节。值字节在范围0 至255范围内返回为int。如果由于流尾已到达 而没有可用字节,则返回值-1。此方法会阻止,直到输入数据 可用,检测到流的结尾,或抛出异常 。子类必须提供此方法的实现。返回:数据的下一个字节,或
-1
如果该流的结尾是 达到。 抛出:IOException - 如果发生I/O错误。
答
从FileInputStream.read()的文档:))
公共INT读( 抛出IOException异常
因此读(返回整数,而不是字节,因此它可以被分配到一个int
变量。 请注意,整数可以隐式转换为整数,无损失。同样来自文档:
返回: 数据的下一个字节,或-1,如果文件的末尾已达到。
对-1的循环检查确定是否已到达文件结尾,如果是,则停止循环。
同意,Mike Nakis的答案非常适合解释这些东西。 –