• Java基础之IO流


    2020/7/8

    一、概念

    I/OInput/Output的缩写,是用于处理设备之间数据传输的技术。在Java程序中,对于数据的输入输出操作以“流(stream)”的方式进行。java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。

     

     

    二、分类

     

    1.   输入流 :磁盘 -----> 内存     InputStream(字节流)、Reader(字符流)

     

       输出流 :内存 -----> 磁盘     Output Stream(字节流)、Writer(字符流)

     

     

    2.   字节流 8bit,用于操作字节文件,包括 .mp3.mp4.rmvb.jpg.doc.ppt.avi  

     

       字符流 16bit ,用于操作普通文本文件,包括 .txt.java.c.cpp

     

     

    3.   节点流 FileInputStream/FileOutputStream/FileReader/FileWriter

     

       处理流 :非节点流(缓冲流/转换流)

     

    节点流看作一根水管,处理流就是水管外面包的一层。处理流在已经存在的流(节点流或处理流)之上,通过对数据的处理提供更强大的读写功能。

    分类

    字节输入流

    字节输出流

    字符输入流

    字符输出流

    抽象基类

    InputStream

    OutputStream

    Reader

    Writer

    访问文件

    (节点流)

    FileInputStream

    FileOutputStream

    FileReader

    FileWriter

    缓冲流

    (处理流)

    BufferedInputStream

    BufferedOutputStream

    BufferedReader

    BufferedWriter

    转换流

     

     

    InputStreamReader

    OutputStreamWriter

    对象流

    ObjectInputStream

    ObjectOutputStream

     

     

     

    三、方法

    1.输入流

    2.输出流

     

    四、步骤

    1.  FileReader

    (1)实例化File类对象,指明需要操作的文件(文件必须要在磁盘真实存在,否则报异常)。

        File file = new File(“hello.txt”);

    (2)创建流对象,将文件加载进流。

        FileReader fr = new FileReader( file );

    (3)数据读入,创建一个临时存放数据的数组。

    char[] cbuf = new char[5];

    int len;

    while((len = fr.read(cbuf)) != -1){    

          for(int i = 0;i < len;i++){

              System.out.print(cbuf[i]);

                   } }

    (4)关闭资源

    fr.close();

    1. FileWriter

    (1)创建File类对象

    (2)创建输入输出流对象

    (3)数据的读入和写出操作

    (4)关闭流资源

    对于字节流FileInputStreamFileOutputStream和上面的过程一样。

    五、缓冲流(处理流的一种)

    1.缓冲流作用

    套接在已有的流之上。

    提高流的读取、写入的速度。原因:内部提供了一个缓冲区。

    2.步骤

    (1)造文件

    (2)造节点流

    (3)造缓冲流

    (4)读取、写入

    (5)关闭外层流

    (6)关闭内存流(可以省略,因为关闭外层流的同时,内层流会自动关闭)

    3.代码示例

     

  • 相关阅读:
    Tomcat与Spring中的事件机制详解
    Kafka消息系统基础知识索引
    配置SpringBoot-从日志系统配置说起
    支付宝手机网页支付和微信公众号支付接入
    centos下搭建YII环境
    为什么需要 Stream
    基于Django的Rest Framework框架的序列化组件
    基于Django的Rest Framework框架的RESTful规范研究
    web中状态码301和302的区别
    Django初见
  • 原文地址:https://www.cnblogs.com/guan-zl/p/13267970.html
Copyright © 2020-2023  润新知