io流的关闭顺序

一般情况:先打开的后关闭,后打开的先关闭;

另一种情况:看依赖关系,如果流a依赖流b,应该先关闭流a,再关闭流b。

FileWriter fw = new FileWriter( "E:/data//车站一次.csv",true);
BufferedWriter bufw = new BufferedWriter(fw);

关闭流(注意顺序):

bufw.close();
fw.close();

此处用BufferedWriter来包装FileWriter,所以应该先关闭bufw,然后关闭fw。

其实完全可以只关闭包装类bufw,不用关闭被包装类,当关闭了包装类之后,会自动关闭被包装的类。

(包装流关闭的时候,会调用被包装流的关闭方法。)

io流的关闭顺序

时间: 2024-10-12 19:24:46

io流的关闭顺序的相关文章

socket编程过程中,流文件关闭顺序问题

程序片段: int sock_fd; FILE *sock_fpo, *sock_fpi, *pipe_fp; sock_fd = accept(sock_id, NULL, NULL);         if (sock_fd == -1 )             oops("accept");         if ((sock_fpi = fdopen(sock_fd, "r")) == NULL)             oops("fdopen

IO流2

一.IO流简介及分类 1.IO流简介 IO流: 简单理解数据从一个地方流向另外一个地方 2.IO流分类 按照数据流动的方向 分为  输入流和输出流 按照数据流动的单位分为   字节流和字符流 二.四大抽象流(都是抽象类) 1.FileInputStream(是InputStream接口的子类) ①构造方法 FileInputStream(String name); 根据指定的路径名创建字节输入流对象 FileInputStream(File file); ②注意:以上路径不存在,它会直接抛出异常

Java IO包装流如何关闭?

http://www.cnblogs.com/qqzy168/p/3670915.html —————————————————————————————————————————————————————— 问题: (1)JAVA的IO流使用了装饰模式,关闭最外面的流的时候会自动调用被包装的流的close()方吗? (2)如果按顺序关闭流,是从内层流到外层流关闭还是从外层到内存关闭? 问题(1)解释: 如下例子代码: FileInputStream is = new FileInputStream("

java IO包装流如何关闭

问题: (1)JAVA的IO流使用了装饰模式,关闭最外面的流的时候会自动调用被包装的流的close()方吗? (2)如果按顺序关闭流,是从内层流到外层流关闭还是从外层到内存关闭? 问题(1)解释: 如下例子代码: FileInputStream is = new FileInputStream("."); BufferedInputStream bis = new BufferedInputStream(is); bis.close(); 从设计模式上看: java.io.Buffer

Java IO流关闭问题的深入研究

转自:https://blog.csdn.net/maxwell_nc/article/details/49151005 前几天看了一篇文章(见参考文章),自己动手试了下,发现有些不一样结论,作博客记录下,本文主要研究两个问题: 包装流的close方法是否会自动关闭被包装的流?关闭流方法是否有顺序?包装流的close方法是否会自动关闭被包装的流?平时我们使用输入流和输出流一般都会使用buffer包装一下, 直接看下面代码(这个代码运行正常,不会报错) 1 import java.io.Buffe

java io流(字符流) 文件打开、读取文件、关闭文件

java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*; public class Index{ public static void main(String[] args) throws Exception{ //打开文件 //字符流方式打开 //字符流每次按一个字符读取 FileReader wj = new FileReader("D:/java/kj/javanew/src/Index.java"

Java socket中关闭IO流后,发生什么事?(以关闭输出流为例)

声明:该博文以socket中,关闭输出流为例进行说明. 为了方便讲解,我们把DataOutputstream dout = new DataOutputStream(new BufferedOutputStream(mySocket.getOutputStream()));中的dout做为Socket输出流的代言.同样的,din是输入流的代言. 可以造成dout被关闭的操作有: 1.调用dout.close();或din.close();因为使用这种流关闭,会造成socket被关闭,所以输入输出

为什么每次下载后必须关闭掉IO流?

读一个文件,忘记关闭了流,你在操作系统里对这个文件的写,删除等操作就会报错,告诉你这个文件被某个进程占用,这是为什么呢? java是从c++设计来的,但是无论是C语言还是C++,都需要手动释放内存,java不需要. 因为java在对象的引用被消除之后,正常情况下,内存资源是会被垃圾回收. 使用完IO流,必须手动回收,这是为了回收系统资源. 一般来说,需要自己close的东西,都是用了虚拟机之外的资源,例如端口,显存,文件等,虚拟机无法通过垃圾回收释放这些资源,只能显式调用close方法来释放.比

Java:IO流与文件基础

Java:IO流与文件基础 说明: 本文所有内容包含图片均为MrSaber自己编写,转载请练习我哦. 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象称作 输入流,可以向其中写入一个字节序列的对象称作 输出流. ? 这些字节序列的来源可以是:文件.网络连接.内存块等. ? 抽象类InputStream和OutputStream是构成输入/输出(I/O)的基础. ? 因为面向字节的流