zoukankan      html  css  js  c++  java
  • Java中的IO流

    什么是IO流


    先看一段百度上的解释:

     

    当然:如果你看不懂,那么你只需要记住下面3句话.

    1.

    (1).我们知道,每个人家里喝的水都是从自来水厂来的,自来水厂的水又是从水源地来的,

    (2).水是通过水管来的。

    (3).那么这当中的水流,便可以理解为IO流。

    2. 那么JAVA中的IO流呢;


      (1).在java中,java就是自来水厂,水源地就是源,家就是目的

    (2).//对于自来水厂当做参照物来说,从水源地流到我自来水厂的水,是从外面进来的,那么水是输入进来的。(输入)

    从自来水厂到家的水,是从自来水厂流出的(输出)。

    对于java程序来说,也是一样的,从源地到我java中的流,便是输入流(InputStream),而从我java中流出的便是输出流(OutputStream)

    (3).那么你已经知道什么是输入流(InputStream)和输出流(OutputStream)了。

    3.下面再看一幅图,缓冲区


    (1).当我们需要水的时候,那么一个储水池能够更好的满足我们,能够让我们想要水就有水。提高的水到效率

    (2).java中的这个储水池叫做缓冲区,(Buffered?)一个用于特定基本类型数据的容器。

    那么这个(问号)?是什么意思呢?

    我们知道储水池有很多种类型的,那么java中的缓冲区自然也有很多种类型的,例如以下最常用的

     

    我们已经知道的InputStream是输入流,那么BufferedInputStream就是输入流的缓冲区了;

    同样,那么OutputStream是输出流,那么BufferedOutputStream就是输出流的缓冲区了;


    4.转换流


    (1).同样的 ,java中的转换流,相当于过滤器,是一种对数据进行编码,改变格式的存储;如下:

    可以将字符以指定编码格式存储。
    可以对文本数据指定编码格式来解读
    指定编码表的动作由构造函数完成

    (2).分为InputStreamReader        OutputStreamWriter

    InputStreamReader
    使用: InputStreamReader isr = new InputStreamReader(is, "gbk");


    OutputStreamWriter
    使用: OutputStreamWriter osw = new OutputStreamWriter(os, "ISO-8859-1");

    IO流的分类:


    介绍几个最主要的;分别是字符流,字节流,转换流。

    (1).字节流

    首先:字节流可划分为两类      输入流InputStream     输出流OutputStream

    对于java来说:当对文件的读取的时候,使用FileInputStream;

    对于java来说:当对文件的输出的时候。使用FileOutputStream;

    如下,完成一个在f盘下的r.txt文件,再复制到f盘下的rrrr.txt;一个文件的复制,并改名;

    (1)使用时先创建:  new FileInputStream( 此处为String类型的需要读入数据文件地址  );

     

    (2)创建一个缓冲区(缓冲区的创建能够提高文件的读取效率)

     

    (3)使用时先创建:  new FileOutputStream( 此处为String类型的需要输出数据文件地址  );

     

    (4).创建一个缓冲区(缓冲区的创建能够提高文件的读取效率)

     

    (5).数据的读取:创建一个byte类型的数组,至于数组的长度建议为1024的倍数;

     

    (6).数据的写入

     

    (7).流的刷新与关闭:对于初学者记住,先刷新,后关闭。 而关闭的顺序,简单来讲你可以全部关闭,不会出错,

    至于其中的关闭顺序,先不予探究。

     

    (2).字符流
    以下就是字符流的详细:

    字符流是字节流的类似。

    1.字符流分为  输入流    输出流

    首先:字符流可划分为两类      输入流Reader     输出流Writer

    对于java来说:当对文件的读取的时候,使用FileReader     ;

    对于java来说:当对文件的输出的时候。使用FileWriter;

    如下,完成一个在f盘下的r.txt文件,再复制到f盘下的rrrr.txt;一个文件的复制,并改名;

    (1)使用时先创建:  new FileReader( 此处为String类型的需要读入数据文件地址  );


    (2)创建一个缓冲区(缓冲区的创建能够提高文件的读取效率)


    (3)使用时先创建:  new FileWriter;( 此处为String类型的需要输出数据文件地址  );

    (4).创建一个缓冲区(缓冲区的创建能够提高文件的读取效率)

    (5).数据的读取:创建一个byte类型的数组,至于数组的长度建议为1024的倍数;

    (6).数据的写入

    (7).流的刷新与关闭:对于初学者记住,先刷新,后关闭。 而关闭的顺序,简单来讲你可以全部关闭,不会出错,

    public class CopyDemo4 {
    public static void main(String[] args) {
    FileReader fr = null;
    BufferedReader br = null;
    FileWriter fw = null;
    BufferedWriter bw = null;
    try {
    fr = new FileReader("f://rrrr.txt"); //创建输入流
    br = new BufferedReader(fr);//创建输入流缓冲区
    fw = new FileWriter("f://ww.txt");//创建输出流
    bw = new BufferedWriter(fw);//创建输出流缓冲区
    String readLine = null;
    while ((readLine = br.readLine()) != null) {//数据的复制
    bw.write(readLine);
    bw.newLine();
    bw.flush(); //刷新
    }
    } catch (IOException e) {//try catch异常
    e.printStackTrace();
    }
    finally {
    try {
    if (fr != null) {
    fr.close(); //流的关闭
    }
    if (br != null) {
    br.close();
    }
    if (fw != null) {
    fw.close();
    }
    if (bw != null) {
    bw.close();
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }

    (3).转换流
    (1).分类  两类

    (2).使用
    1.先创建输入流对象

    InputStream is = new FileInputStream("e://a.txt");

    2.创建转换流对象
    输入流对象,     读出的编码
    InputStreamReader isr = new InputStreamReader(is,    "gbk");
    3.创建输出流对象

    OutputStream os = new FileOutputStream("d://asd.txt");

    4.创建转换流对象
    输 出流对象, 输出的编码
    OutputStreamWriter osw = new OutputStreamWriter(os,"ISO-8859-1");


    原文链接:https://blog.csdn.net/luchenh/article/details/79050105

  • 相关阅读:
    Excel Rendering Limitations
    Output Caching and VaryByParam, VaryByCustom
    ajaxToolkit:AutoCompleteExtender 使用键值对
    Sql Server 2005 存储过程分页
    WEB前端优化
    processModel Element in Machine.config
    如何监测虚拟内存
    MemoryLimit Tuning (ASP.NET v1.1)
    缓存之SqlDependency
    SQL产生随机字符串
  • 原文地址:https://www.cnblogs.com/suger-4/p/12044207.html
Copyright © 2011-2022 走看看