OutputStream、 OutputStreamWriter、 BufferedWriter区别及使用

本文深入解析Java中的OutputStream、OutputStreamWriter及BufferedWriter的区别与使用,包括它们的基本概念、工作原理及如何通过具体代码实例实现文件的读写操作。

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

源码地址:https://gitee.com/qq1319426493/io/tree/master

1、OutputStream,OutputStreamWriter,BufferedWriter区别

1.1、OutputStream:表示输出字节流所有类的超类。输出流接受输出字节并将它们发送到某个接收器。一般我们使用它的子类,如FileOutputStream等.

1.2、OutputStreamWriter:OutputStreamWriter是从字符流到字节流的桥接:写入它的字符使用指定的字节编码为字节字符集。它使用的字符集可以通过名称指定,也可以明确指定,或者可以接受平台的默认字符集。

每次调用write()方法都会导致在给定字符上调用编码转换器。生成的字节在写入底层输出流之前在缓冲区中累积。可以指定此缓冲区的大小,但默认情况下,它足够大,可用于大多数用途。请注意,传递给write()方法的字符不会被缓冲。为了获得最高效率,请考虑在BufferedWriter中包装OutputStreamWriter,以避免频繁的转换器调用

例如: Writer out = new BufferedWriter(new OutputStreamWriter(System.out));
 

1.3、BufferedWriter:将文本写入字符输入流,缓冲字符,以便地写入单个字符,数字和字符串。

可以指定缓冲区大小,或者可以接受默认大小,对于大多数用途,默认值足够用了

提供了一个newLine()方法,它使用平台自的分行隔符概念。并非所有的平台都是用换行符  “\n”  来终止行,因此,调用此方法终止输出行比直接写换行符更为可取。通常,Writer会立即将其输出发送到基础字符或字节流,除非需要提示输出,否则将BufferedWriter包装在任何write() 操作可能代价高昂的Writer周围

2、OutputStream,OutputStreamWriter,BufferedWriter使用

2.1、使用OutputStream写入文件

import java.io.File ;
import java.io.OutputStream ;
import java.io.FileOutputStream ;
public class OutputStream1{
    public static void main(String args[]) throws Exception{    // 异常抛出,不处理
        // 第1步、使用File类找到一个文件
        File f= new File("F://test.txt") ;    // 声明File对象
        // 第2步、通过子类实例化父类对象
        OutputStream out = null ;    // 准备好一个输出的对象
        out = new FileOutputStream(f)  ;    // 通过对象多态性,进行实例化
        // 第3步、进行写操作
        String str = "Hello World!!!" ;        // 准备一个字符串
        byte b[] = str.getBytes() ;            // 只能输出byte数组,所以将字符串变为byte数组
        out.write(b) ;                        // 将内容输出,保存文件
        // 第4步、关闭输出流
        out.close() ;                        // 关闭输出流
        //文件不存在会自动创建
    }
};

2.2、使用OutputStreamWriter写入文件

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
 
public class OutputStreamWriter1 {
	
	public static void main(String[] args) throws IOException {
		 File file= new File("F://test.txt") ;    // 声明File对象
		 
		 FileOutputStream fileOutputStream = new FileOutputStream(file);
		 
		OutputStreamWriter osr = new OutputStreamWriter(fileOutputStream);// 输出 往out里面准备写内容,内容在下面
		String str = "Hello World1!";
		osr.write(str);// 写
		// osr.flush();//如果用于网络传输,记得强制刷新缓冲区,否则输出的数据只停留在缓冲区中,而无法进行网络传输
		osr.close();// 关闭资源
	}
}

3.2、BufferedWriter写入文件

import java.io.BufferedWriter;
import java.io.FileWriter;
 
public class BufferedWriter1 {
 
	public static void main(String[] args) throws Exception {
		 FileWriter output = null;
	        BufferedWriter writer = null;
	        try{
	            output = new FileWriter("F://test.txt");
	            writer = new BufferedWriter(output);
	            writer.write("dasdasdfgsgsgsfasdf asdfsfds fdsfdsf");
	        }finally{
	            if(null != writer){
	                    writer.close();
	            }
	            if(null != output){
	                    output.close();
	            }
	        }
	}
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值