java - 从 FileInputStream 获取字符

标签 java

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/

相关文章:

java - 安全地保留数据

java - 如何在 NetBeans 中将 Java 代码从 jsp 页面中分离出来?

java - 如何在表单提交之间保留 ModelMap?

java - 比较字符串ArrayList

java - Action 事件的计数器变量

java - Spring批处理ItemReader对同一条记录执行多次

java - 我需要将 PDDocument 转换为文件对象

java - 我如何使 double 值在java中具有尾随零。我的程序涉及货币

java - java nio 选择器什么时候在 select() 调用上解锁

java - Eclipselink Maven 没有名为 EntityManager 的持久性提供程序