Java字符流操作

package io;

import java.io.*;

/**
 * 字符流操作
 * InputStreamReader:是从字节流到字符流的桥梁
 * 他读取字节,并使用指定的编码将其接吗为字符
 * 使用的字符集可以由名称指定,也可以被明确指定,或者使用平台默认的字符集
 * 
 * OutputStreamWrite:是从字符流到字节流的桥梁
 * 使用指定的编码将写入的字符编码为字节
 * 字符集可以由名称指定,也可以被明确指定,或者使用平台默认的字符集
 */
public class IODemo2 {
    public static void main(String[] args) {

//        writeBase();
//        readBase();
//        buffwritedBase();
        buffreadBase();

    }

    /**
     * 字符读取操作
     */
    public static void readBase() {
        try {
            //字符读取操作 指定字符集
            InputStreamReader isr = new InputStreamReader(new FileInputStream("P:\\demo\\aaaaa.txt"), "UTF-8");

            //读取一个
            int ch;
            while ((ch = isr.read()) != -1) {
                System.out.print((char) ch);
            }

            System.out.println("\r\n");

            //读取多个
            char[] chs = new char[1024];
            int len;
            while ((len = isr.read(chs)) != -1) {
                System.out.print(new String(chs, 0, len));
            }

            isr.close();
        } catch (IOException e) {
            System.out.println(e);
        }
    }

    /**
     * OutputStreamWriter:
     * 字符写入操作
     * write : 写入数据(写入的数据暂存在缓冲区)
     * flush : 刷新缓冲区(将缓冲区数据写入到文件)
     * close : 关闭资源(关闭前刷新缓冲区)
     */
    public static void writeBase() {
        try {
            //字符写入操作 指定字符集
            OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("P:\\demo\\aaaaa.txt"), "UTF-8");
            osw.write("我喜欢编程");//直接写入字符
            osw.write("\r\n");//直接写入字符
            osw.write("我喜欢Java");//直接写入字符
//            osw.close();

            osw.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 字符缓冲流 写入数据
     * newLine:根据当前平台写入自适应的换行符号
     */
    public static void buffwritedBase(){
        try{
            BufferedWriter bw = new BufferedWriter(new FileWriter("P:\\demo\\bbbbbb.txt"));

            //写入数据
            for (int i = 0; i < 10; i++){
                bw.write("Hello"+i);
                bw.newLine();//自适应平台的换行符,该方法是字符缓冲流类(BufferedWriter)的特有方法
                bw.flush();
            }


            bw.close();
        }catch (IOException e){
            System.out.println(e);
        }
    }

    /**
     * 字符缓冲流 读取数据
     * readLine:每次读取一行内容(不包括换行符),返回 null 表示结束
     */
    public static void buffreadBase() {
        try{
            BufferedReader br = new BufferedReader(new FileReader("P:\\demo\\bbbbbb.txt"));
            //读取数据
            String str;
            while ((str = br.readLine()) != null){
                System.out.println(str);
            }

            br.close();
        }catch(IOException e){
            
        }
    }
}

添加新评论