BufferedOutputStream应用

本文介绍如何利用Java中的BufferedOutputStream类来创建文件,并以追加的方式写入内容。通过示例代码展示了如何初始化BufferedOutputStream,设置文件路径,以及如何将字符串缓冲并写入到文件中。

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

源码

package com.io;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

/**
 * @author yanyugang
 * @description
 * 1、BufferedOutputStream创建文件
 * 2、BufferedOutputStream写入内容,文件末尾,追加方式
 * @date 2019/10/13 15:15
 */
public class BufferedOutputStreamTest {
    public static void main(String[] args) {
        // 文件路径
        String path = "D:" + File.separator + "bufferedoutputstream.txt";
        BufferedOutputStreamWirteFile(path);
    }

    private static void BufferedOutputStreamWirteFile(String path) {
        // JDK7 try-with-resources 自动释放资源
        // BufferedOutputStream 有缓冲区,含有字节数组buf,默认大小8192,缓冲区满了,再写入文件1
        try (
                OutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(path), true))) {
            StringBuffer buf = new StringBuffer();
            buf.append("Hello World!").append("\r\n");
            buf.append("Hello Java!").append("\r\n");
            buf.append("Hello Shao Yv!").append("\r\n");
            buf.append("Hello Jing Tianming!").append("\r\n");
            buf.append("Hello Gao Yue!").append("\r\n");
            bos.write(buf.toString().getBytes());
            bos.write(buf.toString().getBytes());
            bos.write(buf.toString().getBytes());
            // 清空缓冲区,写入到文件中
            bos.flush();
        } catch (
                Exception e) {
        }
    }
}

好的,我可以帮你回答这个问题。首先,BufferedOutputStream和FileOutputStream都是Java IO包中的类,用于将数据写入文件中。其中,FileOutputStream是最基本的文件写入类,它将数据直接写入文件中,而BufferedOutputStream则是在FileOutputStream的基础上添加了缓冲区,可以减少写入文件的次数,从而提高性能。 为了测试两者的性能,我们可以编写以下代码: ```java import java.io.*; public class Test { public static void main(String[] args) throws IOException { long startTime = System.currentTimeMillis(); FileOutputStream fos = new FileOutputStream("test.txt"); for (int i = 0; i < 100000; i++) { fos.write("hello".getBytes()); } fos.close(); long endTime = System.currentTimeMillis(); System.out.println("FileOutputStream time: " + (endTime - startTime) + "ms"); startTime = System.currentTimeMillis(); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("test.txt")); for (int i = 0; i < 100000; i++) { bos.write("hello".getBytes()); } bos.close(); endTime = System.currentTimeMillis(); System.out.println("BufferedOutputStream time: " + (endTime - startTime) + "ms"); } } ``` 在上述代码中,我们分别使用FileOutputStream和BufferedOutputStream向文件中写入100000次"hello"字符串,并记录每次写入的时间。最后,输出两者的时间差异。 你可以尝试运行这段代码,并查看输出结果。一般情况下,BufferedOutputStream的性能会比FileOutputStream更好,因为它使用了缓冲区,可以减少写入文件的次数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值