关闭

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

123人阅读 评论(0) 收藏 举报
分类:

一、字节流是只读取一个字节,字符流是读取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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:26675次
    • 积分:1686
    • 等级:
    • 排名:千里之外
    • 原创:150篇
    • 转载:1篇
    • 译文:0篇
    • 评论:7条
    最新评论