史上最全IO框架四(转换流)

IO之字节字符转换流
课程大纲
一、 转换流概述
1、 转换流可以将字节流转换为字符流,也可以将字符流转换为字节流。
2、 OutputStreamWriter:可以将输出的字符流转换为字节流的输出形式,
3、 InputStreamReader:可以将输入的字节流转换为字符流输入形式。
4、 所谓的输入输出流都是相对的概念,在Java中所有都是相对程序而言的。相对程序来说输出:是指往文件里写东西,输入:指的是读取文件里的东西。
二、 OutputStreamWriter
1、 Public class OutputStreamWriter extends Writer
2、 OutputStreamWriter是字符流通向字节流的桥梁,可以使用指定的charset将要写入流中的字符编码成字节,它使用的字符集可以有名称指定或者显示给定,否则将接受平台默认的字符集。

三、 InputStreamReader
1、 Public class InputStreamReader extends Reader
2、 InputStreamReader是字节流通向字符流的桥梁,它使用指定的charset将要写入流中的字符编码成字节,它使用的字符集可以有名称指定或者显示给定,否则将接受平台默认的字符集。

代码

package com.itheima.filedemo;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.lang.reflect.WildcardType;

import org.xml.sax.InputSource;

/**
* 所谓的输出流:是往文件里写东西的,文件本身里面没有内容,
* 所谓输入流:是读文件里面的内容的,文件本身里面必须有内容才能读啊。
* @author Administrator
*
*/
public class ConvertStreamDemo {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    write();
    read();
}

/**
 * 使用转换流:把字符流转成为字节流输出(本文内容是字节)
 */
public static void write(){

    try {
        //构造一个字节输出流
        OutputStream out = new FileOutputStream("E:\\2.txt");
        //根据字节输出流对象构造一个字节输出流
        Writer writer = new OutputStreamWriter(out);
        String info = "山不在高,有仙则名,水不在深,有龙则灵!";
        //写入文件
        writer.write(info);
        //关闭流
        writer.close();
        out.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

/**
 * 使用转换流:把字节流转换为字符流(文本内容是字节,读出来是字符才能读)
 */
public static void read(){

    try {
        //构造字节输入流对象
        InputStream in = new FileInputStream("E:\\2.txt");
        //根据字节输入流对象创建字符输入流
        Reader reader = new InputStreamReader(in);
        //每次读取512
        char[] cs = new char[512];
        int len = -1;
        StringBuilder  sb = new StringBuilder();
        while ((len = reader.read(cs)) != -1) {
            sb.append(new String(cs, 0, len));
        }

        //关闭
        reader.close();
        in.close();
        //输出
        System.out.println(sb);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值