输入输出流的理解

Posted Goxcheer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输入输出流的理解相关的知识,希望对你有一定的参考价值。

一.流的产生

   变量,数组和对象中存储的数据是暂时存在的,程序结束它们就会丢失.为了能够永久的保存程序创建的数据,需要将它们保存在磁盘文件中,

   这样i/o技术就产生了

二.流分类

    1.按操作类型来分类

     输入流:从文件,网络,压缩包或其它数据源写入内存中目的地(InputStream,Reader)

   输出流:源地写出到文件,网络,压缩包或其它数据输出 (OutputStream,Writer)

      (通俗理解,从对用户可见不可见为输入流,从对用户不可见到用户可见的为输出流)

    2.按流的形式来分类

       字节流:InputStream(字节输入流),OutputStream(字节输出流) 

  字符流:Reader(字符输入流),Writer(字符输出流)

       这四个为抽象类,所有输入流为InputStream或Reader的子类,所有输出流为OutputStream或Writer的子类

三.流的使用

      下面以最常用的FileOutputStream,FileInputStream为例,实例I/O流的使用

      因为是从不可见的数组到可见的文件中,所以用FileOutputStream

    File file=new File("c:/text.txt");  //定义一个新的文件对象
        byte [] b="有志者,事竟成!".getBytes(); //将字节数组作为源
        FileOutputStream out=new FileOutputStream(file); //这里是从数组输出到文件(不可见到可见)
         out.write(b);//数组写入文件
         out.close(); //用完关闭流

    从文件中的信息写入数组,从可见到不可见,所以用FileInputStream

     File file=new File("c:/text.txt");  //定义一个新的文件对象(C盘存在这个文件)
        byte []b=new byte[200]; //作为接收写入的目的源字节数组
        FileInputStream in=new FileInputStream(file);
        in.read(b);
        for(int i=0;i<b.length;i++){
            System.out.println(new String(b,0,b.length));
        }

   仅以这两个作为小实例,下面附上JDK1.7版本API中InoutStream和OutputStream的常用方法

  InputStream:

    

    OutputStream:

    

 

  

      

  

以上是关于输入输出流的理解的主要内容,如果未能解决你的问题,请参考以下文章

C/C++中关于输入输出缓冲区和流的概念理解

字符流;字节流;带缓冲的输入输出流;以及用scanner读文件

深入理解JAVA I/O系列二:字节流详解

IO流 字节输入输出流概念理解以及适用环境

Java 输入/输出——理解Java的IO流

Java IO流中先关闭输出流还是先关闭输入流?为啥?