java - Java 中的文件读取,具有相同的文件读取器

标签 java performance file-io resource-leak

我有两个文件需要使用相同的变量来读取,代码如下:

    try {
            FileInputStream fis = new FileInputStream(filename1);
            InputStreamReader isr = new InputStreamReader(fis, "UTF8");
            BufferedReader br = new BufferedReader(isr);
            String line="";
            while((line=br.readLine())!=null){
            System.out.println(line);
            }

            // Do i need to add these 3 statements ...
            //br.close();
            //isr.close();
            //fis.close();
            //Without the above 3 statements also the code works fine ...

            fis = new FileInputStream(filename2);
            isr = new InputStreamReader(fis, "UTF8");
            br = new BufferedReader(isr);
            line="";

            while((line=br.readLine())!=null){
            System.out.println(line);
            }

            br.close();
            isr.close();
            fis.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

java 中的文件读取不会为第一个文件 filename1 关闭打开的流并释放与其关联的任何系统资源?

没有抛出异常。

最佳答案

所以你有一个资源泄漏,这不会给你带来问题,除非你;

  • 尝试在 Windows 上删除该文件(因为该文件仍处于打开状态)
  • 多次执行此操作,在这种情况下,您可能会用完文件句柄。

关于java - Java 中的文件读取,具有相同的文件读取器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20968248/

相关文章:

c++ - 将 vector 的内容写入文件 C++

java - 多次恢复时 Activity 滚动不流畅

java - 为什么 ArrayList 实现使用 Object[]?

java - hibernate 覆盖 "lazy=false"

mongodb - MongoDB 是否可用作并行处理/多实例应用程序的共享内存?

MySQL写入文本文件

java - 对位于我的服务器中的文件使用 File API 方法

java - 从 ListView 项读取音频文件

python - 为什么 repr(int) 比 str(int) 快?

performance - 服务器达到 MaxClients 设置,请考虑提高 MaxClients 设置。装甲运兵车