代码之家  ›  专栏  ›  技术社区  ›  Manuel Selva

Java输入流有多接近?

  •  7
  • Manuel Selva  · 技术社区  · 14 年前

    在以下代码中:

    DataInputStream in = new DataInputStream(
              new BufferedInputStream(new FileInputStream(file)));
    in.close();
    

    除了关闭“顶级”流之外,还需要关闭其他两个流吗?

    4 回复  |  直到 11 年前
        1
  •  8
  •   KARASZI István    14 年前

    如果你看到 DataInputStream 您可以看到它也关闭了底层流。所以你不需要。这对于所有类型的流都是(或者应该是)正确的。

        2
  •  3
  •   Community miroxlav    7 年前

    我将利用这个机会回答我以前已经回答过的问题。

    通过使用 Project Lombok 您可以让Lombok为您正确关闭流。 可以找到详细信息 here .

        3
  •  1
  •   Adeel Ansari    14 年前

    卡拉齐说得对。此外,为了得到一个想法和一点洞察力,Java IO API实际上是使用装饰器模式实现的。你可以退房 decorator pattern 在维基上。

        4
  •  1
  •   willcodejavaforfood    14 年前

    我会把最后一个街区的关闭,以确保它是正确的冲洗,以防发生异常。

    public void tryToDoWhatever() throws Exception
    {
        DataInputStream in = null;
        try
        {
             in = new DataInputStream(
                  new BufferedInputStream(new FileInputStream(file)));
        }
        finally
        { 
            if (in != null)
                in.close();
        }
    }