1和2的公共(public)代码
String gt="hello master how the heck are you:";
byte o[]=gt.getBytes();
FileOutputStream aab=new FileOutputStream("first.txt");
aab.write(o);
aab.close();
FileInputStream nm=new FileInputStream("first.txt");
1:::
while((nm.read()!=-1)
out.print((char)(nm.read());
2:::
int y=0;
while((y=nm.read())!=-1)
out.print((char)y);
我想问一下为什么这两个(1 和 2)给出不同的输出。我花了很多时间来找到这个但我仍然找不到。如果可以的话请帮助我。 1 的预期输出应与 2 相同,但 1 给出了意外输出。请解释这一点 ..
谢谢
最佳答案
这里
1. while((nm.read()!=-1)
2. out.print((char)(nm.read());
在两个不同的地方从流中读取字节,但只打印一个字节:
- 在第 1 行(while)中从流中读取一个字节(第一个),
- 然后下一个字节(第二个)在第 2 行(打印)中读取 - 并且只打印这个字节
然后整个循环重复:
- 下一个字节(第三个)在第 1 行中读取,
- 和第 2 行中的后续字节(第四个)- 并且打印此字节。
但是在这里:
int y=0;
while((y=nm.read())!=-1)
out.print((char)y);
流中的字节只在一个地方读取 - 在 while
指令中,并且所有字节都被打印出来。
关于java - 从 FileInputStream 获取字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37903991/