Java 为什么输入与“比较”-“1”吗;?
当我浏览示例代码时,我正在刷新自己的I/O,我看到了一些让我困惑的东西:Java 为什么输入与“比较”-“1”吗;?,java,file-io,primitive-types,Java,File Io,Primitive Types,当我浏览示例代码时,我正在刷新自己的I/O,我看到了一些让我困惑的东西: public class CopyBytes { public static void main(String[] args) throws IOException { FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream("xanadu.txt");
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循环将停止
读这篇文章太棒了
从Oracle文档:
public abstract int read()
抛出IOException从输入流读取数据的下一个字节。值字节作为范围为0的整数返回
到255。如果由于流的结尾已被删除而没有可用字节
到达时,返回值-1。此方法在输入数据之前一直阻塞
是可用的,检测到流的结尾,或者检测到异常
扔。子类必须提供此方法的实现
返回:数据的下一个字节,或者-1
如果流的结尾是
达到。抛出:IOException-如果发生I/O错误
从以下文件中: 公共int read() 抛出IOException 因此read()返回整数,而不是字节,因此可以将其分配给
int
变量。
请注意,整数可以隐式转换为整数,而不会丢失。也可从文件中获得:
返回:
数据的下一个字节,如果到达文件末尾,则为-1
针对-1的循环检查确定是否已到达文件结尾,如果已到达,则停止循环。同意,Mike Nakis的回答非常适合解释这一点。