用字节流和字符流读取信息。(对字节流的重新认识)

一、字节流是只读取一个字节,字符流是读取2个字节。一个汉字占用2个字节‘

 

package Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Test8 {
public static void main(String[] args) throws IOException {
	try {
		File file=new File("E:/temp/text.txt");
		FileInputStream fStream=new FileInputStream(file);
		StringBuffer sub=new StringBuffer();
		byte[] b=new byte[4];// 如果这样写,“你好”汉字能读出,但是那是因为没有符号。有符号的话还是会出现乱码
		while(fStream.available()>0){//字节流是支持写入汉字的但是不 好,一有标点就会乱码。字节流独有的判断方法
			fStream.read(b);
			String string=new String(b);//读取内容转换为字符串
			sub.append(string);
			b=new byte[4];//重新new一个数组,把原来的数组清空
		}
		System.out.println(sub.toString().trim());//trim方法是把后面的空格去掉
		fStream.close();
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}
}
二、

package Test;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import javax.security.auth.Subject;
public class test9 {
	public static void main(String[] args) {
		// 使用字符流读取文件
		try {// 创建文件对象
			File file = new File("E:/temp/text.txt");
			// 根据源文件对象那构建字符读取流
			FileReader fr = new FileReader(file);
			// 创建追加存储读取内容的StringBuffer对象
			StringBuffer su = new StringBuffer();
			// 定义char类型的额容器数组
			char[] c = new char[1024];
			// 读取并返回读取长度(如没读到返回-1)
			int length = fr.read(c);
			// 循环判断读取
			while (length != -1) {// 将本次读取的内容追加到sub中
				su.append(c);
				c = new char[1024];// 重置数组
				length = fr.read(c);
			}
			fr.close();
			System.out.println(su.toString().trim());
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值