本文共 1712 字,大约阅读时间需要 5 分钟。
一、字节流是只读取一个字节,字符流是读取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(); } }}
转载地址:http://xlrqj.baihongyu.com/