【问题标题】:What does this part of code do in the java stream class?这部分代码在java流类中做了什么?
【发布时间】:2012-11-30 06:01:50
【问题描述】:

我正在努力学习 Java。我有一小段代码试图读取和写入输入流。但是有一句话我就是不明白意思。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

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);
            }
        } finally {
            if (in != null) {
                in.close();
            }
            if (out != null) {
                out.close();
            }
        }
    }
}

这部分是什么意思:?

while ((c = in.read()) != -1) {
            out.write(c);

变量C实际上做了什么?

该程序的实际功能如何?

变量C 是否从输入流文件中读取,并且在读取之后,正在读取的部分是否已从输入流文件中清除并消除?

有人可以帮助我逐行解释这段代码的作用吗?

【问题讨论】:

  • 更明确地说,您已经提出了 6 个问题,其中一些问题的答案可以接受。您需要通过单击答案左侧的复选标记来“接受”提供解决方案的答案。

标签: java stream


【解决方案1】:

根据JavaDoc

返回:

下一个字节的数据,如果到达文件末尾,则为 -1。

意思是:

while ((c = in.read()) != -1) {
            out.write(c);

表示直到输入流还没有找到文件结尾,即文件中还有字符,继续读取。读取下一个数据字节后,将其写入输出流。

【讨论】:

    【解决方案2】:

    -FileInputStreamFileOutputStream分别用于需要读取和写入文件的时候,格式为bytes....

    while ((c = in.read()) != -1) {
                out.write(c);
     }
    

    - 你正在做的是读取文件xanadu.txt 中的数据 以字节的形式,然后将其写入文件 outagain.txt.

    - 它将一直持续到 in.read() 返回 -1,因为 -1 将指示 EOF(文件结尾)。

    【讨论】:

      【解决方案3】:

      这部分是什么意思:?

      while ((c = in.read()) != -1) {
              out.write(c);
      

      xanadu.txt文件中逐字节读取,并逐字节输出到outagain.txt

      变量 C 的实际作用是什么?

      Java 区分大小写,因此 c 不是 C。它具有从输入文件中读取的字节值。

      【讨论】:

        【解决方案4】:
        while ((c = in.read()) != -1) {
                out.write(c);}
        

        在上面的代码中,根据JavaDocs 方法in.read() 返回 -1 如果它到达 文件的末尾 所以这意味着你需要一直在循环中,直到 read 方法没有返回 -1

        该程序的实际功能如何?

        现在进入这部分 您基本上是使用 FileInputStream 将文件作为 rawbytes 读取,然后使用 FileOutputStream 再次将其写入文件,其中上述 while 循环确定您将整个文件写入到最后

        变量 C 是否从输入流文件中读取,并且在读取后,正在读取的部分是否已从输入流文件中清除并消除?

        方法read()从输入流中读取一个字节的数据并返回它,所以你必须在读取的同时写入数据,是的,之前读取的字节将在读取新字节时被删除

        FileInputStream 用于读取原始字节流,例如 Image 数据。要读取字符流,请考虑使用 FileReader

        【讨论】:

          猜你喜欢
          • 2013-08-22
          • 1970-01-01
          • 2015-11-30
          • 2018-11-01
          • 2016-02-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多