Java - BufferedWriter写文件, 拷贝文件

BufferedWriter是Java中用于高效写入字符的类,它可以缓冲字符以减少对底层流的写入次数,提高性能。默认的缓冲区大小通常足够,但也可自定义。newLine()方法确保使用平台兼容的行结束符。示例代码展示了如何用BufferedWriter向文件写入内容以及结合BufferedReader实现文件拷贝。在处理大文件或低效流时,使用缓冲是明智的选择。

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

将文本写入字符输出流,缓冲字符,以便高效地写入单个字符、数组和字符串。
可以指定缓冲区大小,也可以接受默认大小。 对于大多数用途,默认值足够大。

提供了一个 newLine() 方法,它使用由系统属性 line.separator 定义的平台自己的行分隔符概念。 并非所有平台都使用换行符 ('\n') 来终止行。 因此,调用此方法终止每个输出行优于直接写入换行符。

通常,Writer 会立即将其输出发送到底层字符或字节流。 除非需要提示输出,否则建议将 BufferedWriter 包裹在任何其 write() 操作可能代价高昂的 Writer 周围,例如 FileWriters 和 OutputStreamWriters。 例如,

 PrintWriter out
   = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));

会将 PrintWriter 的输出缓冲到文件中。 如果没有缓冲,每次调用 print() 方法都会导致字符被转换为字节,然后立即写入文件,这可能非常低效。

 @Test
    public void bufferedWriterWriteFile(){
        String filePath = "C:\\Users\\JinZh\\IdeaProjects\\TestJa\\software\\copy_directory\\file02.txt";
        BufferedWriter bufferedWriter = null;
        try {
            //拼接方式读取
            bufferedWriter = new BufferedWriter(new FileWriter(filePath, true));
            bufferedWriter.write("hello world1");
            bufferedWriter.write("hello world2");
            bufferedWriter.write("hello world3");
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            try{
                if(bufferedWriter!=null){
                    bufferedWriter.close();
                }
            }catch (IOException e){
                e.printStackTrace();
            }
        }

    }

拷贝文件

我们可以使用BufferedReader和BufferedWriter拷贝非二进制文件,如下。

   @Test
    public void bufferedCopy(){
        String fromPath="C:\\Users\\JinZh\\IdeaProjects\\TestJa\\software\\file02.txt";
        String toPath = "C:\\Users\\JinZh\\IdeaProjects\\TestJa\\software\\copy_directory\\file02.txt";
        BufferedReader bufferedReader = null;
        BufferedWriter bufferedWriter = null;
        String line = null;
        try {
            bufferedWriter = new BufferedWriter(new FileWriter(toPath, true));
            bufferedReader = new BufferedReader(new FileReader(fromPath));
            while ((line = bufferedReader.readLine())!=null){
                bufferedWriter.write(line);
                bufferedWriter.newLine();
            }

        }catch (IOException e){
            e.printStackTrace();
        }finally {
            try {
                if(bufferedWriter!=null){
                    bufferedWriter.close();
                }
                if(bufferedReader!=null){
                    bufferedReader.close();
                }
            }catch (IOException e){
                e.printStackTrace();
            }
        }



    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值