ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

io的转换流和缓冲流

2021-03-06 11:03:25  阅读:134  来源: 互联网

标签:字符 转换 字节 缓冲 bw io 创建 new public


流本质上分为输入流与输出流,或字节流与字符流,而转换流与缓冲流本质上是功能流,转换流是为字符指定码表,缓冲流是为了加速。

转换流:

    OutputStreamWriter:是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节。它的作用的就是,将字符串按照指定的编码表转成字节,在使用字节流将这些字节写出去。

              

      

      当我们需要指定码表的时候,需要用转换流,而不需要指定码表的时候,可以用他的直接子类,FileWriter.同时使用转换流,还需要配合FileOutputStream使用。

      代码如下:

        

复制代码
public class Demo02 {

    public static void main(String[] args) throws IOException {
        // 创建字节输出流对象,明确目的地
        FileOutputStream fos=new FileOutputStream("D:\\io0803\\utf.txt",true);
        //创建转换流对象,明确码表
        OutputStreamWriter osw=new OutputStreamWriter(fos,"UTF-8");
        //写出一个字符串
        osw.write("我很好");
        //释放资源
        osw.close();
    }

}
复制代码

    InputStreamReader:

            是字节流通向字符流的桥梁:它使用指定的字符编码表读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。

            

     代码:

        

复制代码
public class Demo03 {

    public static void main(String[] args) throws IOException {
        // 明确字节输入流对象,明确目的地
        FileInputStream fis = new FileInputStream("D:\\io0803\\utf8.txt");
        // 创建转换流对象,指定编码表
        InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
        // 读取
        int len = 0;
        while ((len = isr.read()) != -1) {
            System.out.println((char) len);
        }
        // 释放资源
        isr.close();
    }

}
复制代码

缓冲流:   

  代码:

      

复制代码
public class Demo05 {

    public static void main(String[] args) throws IOException {
        //创建字符输入流,明确数据源
        FileReader fr=new FileReader("D:\\io0803\\abc.png");
        //创建缓冲字符流加速
        BufferedReader br=new BufferedReader(fr);
        //创建字符输入流,明确目的地
        FileWriter fw=new FileWriter("D:\\io0803\\a\\abc.png");
        //创建缓冲字符输出流加速
        BufferedWriter bw=new BufferedWriter(fw);
        //开始复制
        int len=0;
        while((len=br.read())!=-1){
            bw.write(len);
        }
        //释放资源
        br.close();
        bw.close();
    }

}
复制代码

使用字符缓冲流完成文本文件的复制,用特有的方法一行一行的复制:

    

复制代码
public class Demo07 {

    public static void main(String[] args) throws IOException {
        // 创建字节输入流,明确数据源
FileInputStream fis=new FileInputStream("D:\\io0803\\demo01.txt");
//创建转换流对象,指定码表
InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
//创建字符缓冲流对象,加速
BufferedReader br=new BufferedReader (isr);
//创建字节输出流。明确目的地
FileOutputStream fos=new FileOutputStream("D:\\io0803\\buffer3.txt");
//创建转换流对象,明确码表
OutputStreamWriter osw=new OutputStreamWriter(fos,"UTF-8");
//加速
BufferedWriter bw=new BufferedWriter(osw);
//
String line=null;
while((line=br.readLine())!=null){
    //写一行
    bw.write(line);
    //换行
    bw.newLine();
    //刷新流
    bw.flush();
}
//释放资源
br.close();
bw.close();
    }

}
复制代码

标签:字符,转换,字节,缓冲,bw,io,创建,new,public
来源: https://www.cnblogs.com/cyqtq/p/14489862.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有