java学习笔记(缓冲字符流+转换流*)

缓冲字符流和缓冲字节流差不多

注意一下写程序的时候区分开两个"管道"就行

还有一个问题,再利用缓冲数组写入文件的时候,不一定用for遍历数组

可以直接用write(arr,0.len-1)吧数组全部写入

或者是直接把数组变成字符串  new String(arr)

package com.Ioliu;
//关于缓冲字符流,几乎是没啥变化
// 只要是区分开字符(reader write)和字节流(Inputstream Outputstream)四个抽象基类就行了;
import java.io.*;
public class I0_buffered_char {
    public static void main(String[] args) throws IOException {
        //按照缓冲字节流,似乎和之前那个没啥区别;
        BufferedReader br=new BufferedReader(new FileReader("D:\\data.txt"));
        BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\demo.txt",true));
        //这是一个推车复制
        /*char[] arr=new char[2048];
        int len=br.read(arr);
        while(len!=-1){
            for(int i=0;i<len;i++){
                bw.write(arr[i]);
            }
            len=br.read(arr);
        }*/
        //还有一个之前用过的按行复制的方法
        String str=br.readLine();
        while(str!=null){
            bw.write(str);
            bw.newLine();//每次复制完一行的内容以后重新分出一行
            str=br.readLine();
        }
        bw.close();
        br.close();
    }
}

关于转换流

package com.Ioliu;
//InputStream outputstream 本质上是字符流,起到转换作用,因此也被称之为转换流
//记住这个顺序,一般变成字符流更快一点
//Inputstream 起到的作用是字节在进入程序之前变成字符
//OutputStream起到的作用是字符在离开程序之时重新变成字节
import java.io.*;
import java.nio.charset.StandardCharsets;

public class Io_type_char {
    public static void main(String[] args) throws IOException {
        File f1=new File("D:\\data.txt");
        File f2=new File("D:\\dio.txt");
        //先搭建字节流
        FileInputStream a1=new FileInputStream(f1);
        FileOutputStream a2=new FileOutputStream(f2);
        //搭建一下转换流
        //字符-------->字节,在转化的时候要指明字符的编码类型(不知名编码类型的话就会默认程序的编码)
        InputStreamReader b1=new InputStreamReader(a1, StandardCharsets.UTF_8);
        //字节-------->字符
        OutputStreamWriter b2=new OutputStreamWriter(a2,StandardCharsets.UTF_8);
        //数组尚且是在内部进行搬运的,内部已经转化为字符流,所以用字符数组进行搬运
        char[] arr=new char[5];
        int n=b1.read(arr);
        while(n!=-1){
            //==这里可以直接把数组写进去,谈后再写上实际有效长度,省的再利用for进行写入
            b2.write(arr,0,n-1);
            n=b1.read(arr);
        }

        //效果上似乎没本质的区别
        //一样的,对这个处理流进行操作和关闭就可以了
        b2.close();
        b1.close();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值