java为什么输入与“1”相比?
当我浏览示例代码时,我正在刷新自己的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");
out = new FileOutputStream("outagain.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
如何将int值(c)分配给来自输入流(in.read())的数据字节?while循环为什么要等待它不等于-1呢
# 1 楼答案
从FileInputStream.read()的文档中:
因此read()返回整数,而不是字节,因此可以将其分配给
int
变量。 请注意,整数可以隐式转换为整数,而不会丢失。也可以从文档中看到:针对-1的循环检查确定是否已到达文件结尾,如果已到达,则停止循环
# 2 楼答案
当到达输入端时,这个
(c = in.read())
将返回-1
,因此while循环将停止读这篇很棒的answer
从Oracle文档: