Java 从FileInputStream获取字符

Java 从FileInputStream获取字符,java,Java,1和2的通用代码 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:::

1和2的通用代码

    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);
流中的字节只在
指令中的一个位置读取,而
指令中的所有字节都被打印出来