8.3JavaI/O流之OutputStream

本文探讨了Java中的OutputStream抽象类及其主要方法,包括write()、close()和flush()。OutputStream使用缓冲区提高效率,避免频繁输出造成的资源浪费。FileOutputStream作为OutputStream的子类,提供了一次写入多个字节的功能。而ByteArrayOutputStream则常用于测试,构造OutputStream实例。

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

OutputStream与InputStream类似,都是抽象类,该抽象类最重要的方法是void write(int b):

public abstract void write(int b) throws IOException;

该方法写入一个字节到输出流,根据传入的int值传入字节,每次只传一个字节,即int最低8位表示字节的部分。
OutputStream还有两个方法,一个与InputStream相同的close()方法,另一个是flush()方法
flush()方法的作用是:将缓冲区内的字节输出到目的地。
OutputStream的缓冲区:计算机中输出一个字节和输出n个字节所用的时间是一样的,因此如果每次只输出一个字节,会造成资源浪费,建立缓冲区,将输出的字节先存入缓冲区,待缓冲区慢或者需要释放时对缓冲区进行释放将字节传入目的地。

FileOutputStream

相同的OutputStream的子类是FileOutputStream。

public void writeFile() throws IOException {
    OutputStream output = new FileOutputStream("out/readme.txt");
    output.write(72); // H
    output.write(101); // e
    output.write(108); // l
    output.write(108); // l
    output.write(111); // o
    output.close();
}

相同的FileOutputStream也有一个一次输入多个字符的方法,void write(byte[] b);
注意:getByte()方法返回的是字节。

public static void writeOutput(String str,String filePath) throws  IOException {
		try(OutputStream outputStream = new FileOutputStream(filePath);){
			outputStream.write(str.getBytes("UTF-8"));
		}
	}

同样write()方法也是阻塞的。

ByteArrayOutputStream

相同的,ByteArrayOutputStream可以作为测试类,来构造OutputStream。

public class Main {
    public static void main(String[] args) throws IOException {
        byte[] data;
        try (ByteArrayOutputStream output = new ByteArrayOutputStream()) {
            output.write("Hello ".getBytes("UTF-8"));
            output.write("world!".getBytes("UTF-8"));
            data = output.toByteArray();
        }
        System.out.println(new String(data, "UTF-8"));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值