用字符流文件复制Reader/Writer

该博客详细介绍了如何使用Java的字符流和字节流进行文件复制的过程,包括从文件到内存,再到新文件的步骤。涉及关键操作如创建输入输出流,读写数据,字符串替换以及流的关闭。示例代码展示了整个文件复制的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总的来说字符流的复制与字节流大同小异

流程 文件——>内存——>文件

一、文件到内存

(1)创建输入流管道

Reader reader = new Reader("d:/abc.txt");

(2)创建输出流管道

Writer writer= new Writer("d:xyz.txt");

(3)在内存中创建数组来接收数据字符流char[]

注意:1个字符等于8个字节

Char[] buf=new char[4];

(4)创建可变字符串用来接收拼接的数据

StringBuffer sb=new StringBuffer();

(5)创建返回值,用来判断文件是否出入完了,输入完了返回值为-1

int len=-1;

(6)多次输入用while循环直到 文件返回值为-1 不等于-1是继续输入

while(len=reader.read(buf)!=-1){
    //输入进来的数据用append()方法来进行拼接
    sb.append(buf,0,len);
}

(7)将StringBuffer转换成String进行替换

String content=sb.toString();//用toString()方法

content = content.replace("")

(8)将替换的内容输出到文件  内存——>新文件

Writer.writer(content);

(9)先关闭输入流,再关闭输出流

writer.close();
reader.close();

二、实现

package IO;

import java.io.*;

public class FileCopyCharator {
    public static void main(String[] args) {
        Reader reader =null;
        Writer writer =null;
        //将文件输入到内存
        try {
            reader=new FileReader("d:/说明.txt");
            writer=new FileWriter("d:/sb.txt");

            char[] buf=new char[4];
            //用于字符串拼接
            StringBuffer sb=new StringBuffer();

            //创建返回值
            int len=-1;
            while ((len=reader.read(buf)) != -1){
                //str += buf; 每次收到的字符进行拼接apend()方法
                sb.append(buf,0,len);//每次读取4个字符 拼接起来


            }
            //在内存中 替换站位符
            System.out.println(sb);
            String content = sb.toString();
            content=content.replace("大家好","buhao");

            //将替换后内容 输出到文件 内存->文件 wrtier
            writer.write(content);
            System.out.println("成功");



        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(writer!=null&&writer!=null){
            try {
//                writer.flush();   //也可用flush()将管道中的数据刷出道文件中
                writer.close();
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
                }
            }
        }




    }
            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱穿风衣的土豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值