javase:IO字符流

输入/出字符流

输入/出字符流

①Reader输出字符流
②Writer输出字符流

特点

①读写内容是字符
②是抽象类
③是字符流的根类
④读取的文件是文本文件

API

①int read() :读取文本文件内容,每次读取一个字符(char),将char的字符无符号扩展,扩展为32位,使用低16位存储字符
②void write(int) :将整形的低16位,以字符的形式写入到文件中
③void close()

文件输入/出字符流

文件输入输出字符流

①FileReader文件输入字符流
②FileWriter文件输出字符流

特点

读数据方式是字符,属于节点流

API

package IODemo;

/*
    文件拷贝
 */

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileRederDemo {

    public static void main(String[] args) throws IOException {
        //1.获取文件路径
        String path = "C:\\Users\\Gypsophila\\Desktop";

        //2.创建文件输入字符流
        FileReader reader = new FileReader(path+"\\test2.txt");

        //3.输出字符流
        FileWriter writer = new FileWriter(path+"\\test3.txt");

        while(true){
            //4.读取文件内容
            int buf = reader.read();
            //5.结束循环
            if(buf == -1){
                System.out.println("拷贝完成");
                break;
            }
            //6.将字符写入到文件中
            writer.write(buf);
            //7.清空缓存区
            writer.flush();
        }
        //8.关闭管道流
        reader.close();
        writer.close();
    }

}

转换字符流

字符集

①Ascll:只能表示键盘的键位
②GBK/GB2312:中文操作系统默认GBK
③utf-8:适用于网络传输,英文1个字节,拉丁文2个字节,中文,日文,韩文3个字节表示
④ISO8859-1欧洲的通用标准
⑤unicode:使用2个字节表示世界上所有文字

转换字符流

①InputStreamReader 将字节转换成字符
②OutputStreamWriter 将字符转换成字节

API

package IODemo;
/*
    拷贝文件
 */
import java.io.*;
public class changeStreamReaderDemo {
    public static void main(String[] args) throws IOException {
        //1.获取文件路径
        String str = "C:\\Users\\Gypsophila\\Desktop";
        //2.创建的是字节流--->字符流
        InputStreamReader reader = new InputStreamReader(new FileInputStream(str+"\\test1.txt"),"GBK") ;
        //3.创建一个输出字节流--->字符流
        OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(str+"\\test5.txt"),"GBK") ;
        //4.边读边写
        char[] buf = new char[1024];
        while(true){
            int len = reader.read(buf);
            if(len == -1){
                break;
            }
            writer.write(buf,0,len);
            writer.flush();
        }
        //5.关闭
        reader.close();
        writer.close();
    }
}

缓冲字符流

缓冲字符流

①构造:BufferedInputStream 缓冲字节流
BufferedOutputStream 缓冲字节流
2.特点:属于处理流,起到缓冲的数据的作用,默认缓冲区8k
3.字符流和字节流对比
①缓冲字节流:读取或写入一个数组的大小
②缓冲字符流:每次读取或者写入一行
4.API
String readLine() 每次读取一行字符,如果返回null,代表文件结束

打印字符流

1.构造:PrinterWriter
2.特点:即使节点流又是处理流
3.API
①void write(String s) 输出字符串
②PrintWriter append(String s) 向输出流追加字符串
③void println(String s) 打印字符串并且输出换行
④void flush() 刷出缓冲区数据
字符串字符流

package IODemo;

import java.io.*;

public class PrintlnWriterDemo {

    public static void main(String[] args) throws IOException {
        //1.获取文件路径
        String str = "C:\\Users\\Gypsophila\\Desktop";

        //2.创建输入流
        BufferedReader br = new BufferedReader(new FileReader(str+"\\test1.txt"));

        //3.创建输出流
        PrintWriter pw = new PrintWriter(new FileWriter(str+"\\test4.txt"));

        //4.边读边写
        while(true){
            //5.读入一行(\n)
            String data = br.readLine();
            //6.退出条件
            if(data == null){
                break;
            }
            //7.写出数据
            pw.println(data);
            //8.刷出数据
            pw.flush();
        }
        //9.关闭管道流
        br.close();
        pw.close();
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值