IO流bufferedReader中 if(br!=null) br.close();啥意思? 不是等于空流结束了才关闭流吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO流bufferedReader中 if(br!=null) br.close();啥意思? 不是等于空流结束了才关闭流吗?相关的知识,希望对你有一定的参考价值。

public class IOUtil
private static BufferedReader br;
public static BufferedReader getReader(String filepath)throws IOException
br = new BufferedReader(new InputStreamReader(
new FileInputStream(filepath)));
return br;

public static void close()throws IOException
if(br!=null)
br.close();


对close()方法有疑问。不理解为什么br流对象不等于null,l关闭。

if(br!=null) br.close(); 当br不是空时才进行关闭。 这是一种常用的保护机制。 参考技术A txt读取到最后是null
但br并不是存放着txt里读取的内容,它存放着引用(地址)(指针)。
在程序进行中可能发生某种错误,造成br为空,直接关闭空指针会产生异常

Java IO流 之 BufferedReader

http://www.verejava.com/?id=16994684528313

package com.io2;

import java.io.*;

public class TestBufferedWriter
{
    public static void main(String[] args)
    {
        Writer w;
        try
        {
            w = new FileWriter(new File("res/buffered.txt"));
            //缓存流   他的数据  是保存在 内存当中
            BufferedWriter writer=new BufferedWriter(w);
            //写入数据
            writer.write("hello world");
            //只有 用 flush 才能把 内存当中的数据 写入 文件
            writer.flush();
            
            //读取数据
            Reader r=new FileReader(new File("res/buffered.txt"));
            BufferedReader reader=new BufferedReader(r);
            //可以以 一行 一行读取文件内容
            System.out.println(reader.readLine());
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
}

http://www.verejava.com/?id=16994684528313

以上是关于IO流bufferedReader中 if(br!=null) br.close();啥意思? 不是等于空流结束了才关闭流吗?的主要内容,如果未能解决你的问题,请参考以下文章

IO流——BufferedReader和BufferedWriter

Java IO流 之 BufferedReader

java;怎么关闭流文件?

IO流BufferedReader------BufferedWriter 高效缓冲区

Java IO流 之 BufferedReader BufferedWriter 实例

IO流25 - 字符流 - 字符输出流的缓冲流以及字符输入流的缓冲流BufferedWriter和BufferedReader