Java IO流之字符流

博客介绍了Java字符流,包括字符输出流Writer及其子类FileWriter、字符输入流Reader及其子类FileReader。指出字符流每次操作单位是字符,自带缓存。还说明了字节流和字符流的区别,以及操作非文本文件用字节流、操作文本文件用字符流的选择方法,并给出字符流代码示例。

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

因为一个中文字符算两个字节,如果按照字节流读取的话,可能只读半个中文字节,从而引入字符流,确保读入字符的准确性

 

1.字符输出流Writer

字符输出流Writer,对文件的操作使用子类 FileWriter

2.字符输入流Reader

字符输入流Reader,对文件的操作使用子类FileReader

特点:

 * 每次的操作单位是一个字符
 * 文件字符操作流r.read(ch)会自带缓存,默认大小为1024字节,在缓存满后,或手动刷新缓存,或关闭流时,会把数据写入文件

3.字节流和字符流的区别:

字符流的内部实现还是字节流 

4.如何选择使用字节流还是字符流:

一般操作非文本文件时,如图片、视频等,使用字节流。操作文本文件时,使用字符流

5字符流代码示例:

package com.lemon;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
/**
 *  字符流:
 * 字符输出流Writer,对文件的操作使用子类 FileWriter
 * 字符输入流Reader,对文件的操作使用子类FileReader
 * 每次的操作单位是一个字符
 * 文件字符操作流r.read(ch)会自带缓存,默认大小为1024字节,在缓存满后,或手动刷新缓存,或关闭流时,会把数据写入文件
 * @author lemonSun
 *
 * 2019年5月4日下午1:06:22
 */
public class CharStreamDemo {

	public static void main(String[] args) {
		
		//out(); //输出流 向文件中写
		in();    //输入流 从文件中读
	}
	
	
	private static void in() {
		
		//确认目标文件
		File file = new File("F:\\javatest\\lemon1.txt");
		
		try {
			Reader r = new FileReader(file);
			StringBuilder sb = new StringBuilder();
			char[] ch = new char[1];
			int len = -1; //每次读取的长度
			while((len = r.read(ch))!=-1) {
				sb.append(new String(ch,0,len));
			}	
			//关闭流 
			r.close();
			//打印
			System.out.println(sb);
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
	
	private static void out() {
		
		//确认目标文件
		File file = new File("F:\\javatest\\lemon1.txt");
		
		try {
			//输出流
			Writer w = new FileWriter(file,true);//追加内容
			//写入
			w.write("大河向东流");
			//关闭流
			w.close();	
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值