字符流读写

一:文件字符输入流:Reader

1:读一个字符

(中文不会出现乱码(如果代码与文件编码一致),性能较差)

public int read()   每次读取一个字符返回,如果字符已经没有可读的返回-1

public class Test {
    //我的字符集是UTF-8   bbb.txt里面的内容为“我爱学习java”
    public static void main(String[] args)  throws Exception{
        Reader ro=new FileReader("src/bbb.txt");//绝对路径 创建一个文件字符输入流
        int code=ro.read();//返回的是字符编号 //一次读一个内容
        System.out.println(code); //输出 25105
        System.out.println((char)code); //输出  我    
    }
 
}

使用循环一个字符一个字符的读

public class Test2 {
    //使用循环一个字符一个字符的读
    public static void main(String[] args) throws Exception {
        Reader ro=new FileReader("src/bbb.txt");
        int code;
        while((code=ro.read())!=-1) {
            System.out.print((char)code); //字符自带换行不用我们换行 输出我爱学习java
        }
 
    }
 
}

2:一次读取一个字符数组输出

public  int read(char[] buffer) 每次读取一个字符数组,返回读取的字符数,如果字符已经没有可读的返回-1

目前阶段最好读取中文的方式

import java.io.FileReader;
import java.io.Reader;
 
public class Test3 {
    //使用循环每次读取一个字符数组数据
 
    public static void main(String[] args) throws Exception {
        Reader ro=new FileReader("src/qqq.txt");//绝对路径
        int len;//记录每次读取的长度
        char[] buffer=new char[500];
        while((len=ro.read(buffer))!=-1) {
            String string=new String(buffer,0,len);// 解码读多少取回多少
            System.out.print(string);
        }
 
    }
}

3.文件字符输出流

字符流、字节流如何选择使用?

字节流适合做一切文件数据的拷贝(音视频,文本)

字节流不适合读取中文内容输出

字符流适合做文本文件的操作(读、写)

package 字符流;
 
import java.io.FileWriter;
import java.io.Writer;
 
public class Test5 {
 
    public static void main(String[] args)  throws Exception{
        //文件字符输出流
        Writer wr=new FileWriter("E:/aaaaaa.txt",true);//没有文件会自动创建 ,第二个参数为true表示追加,没有表示覆盖
        //写一个字符到文件
        wr.write("a");
        wr.write(97);
        wr.write("牛");
        wr.write("\r\n"); //换行
        
        //写一个字符串
        wr.write("我爱学习java");
        wr.write("\r\n"); //换行
        
        //写一个字符数组
        wr.write("你是小牛马".toCharArray()); 
        wr.write("\r\n"); //换行
        
        //写一个字符串的一部分
        wr.write("好好学习,天天向上", 2, 2); //写"学习"   起始位置 长度
        wr.write("\r\n"); //换行
        
        //写一个字符数组的一部分
        wr.write("牛马学习66".toCharArray(),2,2); //写 学习
        
        //wr.flush();//刷新 后还可以用流
        wr.close(); //包含刷新,关闭后就不可再用
        System.out.println("完成");
 
    }
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值