四、Java高级--7、FileInputStream和FileReader读取文本文件区别

  • 通过FileInputStream读完文本文件,显示在屏幕上
    (FileInputStream并不适合读文本文件,而是用于读取二进制等非文本文件的,此时就要用FileReader读取文本文件,看一下有什么区别)
package javastudy;

import java.io.FileInputStream;
import java.io.IOException;

public class Test16 {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        FileInputStream fis=new FileInputStream("E:\\文件流笔记.txt"); //创建一个文件流对象,并定义Stringname路径
        int ch=0;
        while((ch=fis.read())!=-1){ //读取文件,直至为-1,即为读完
            System.out.print(ch+"\t");
        }
        fis.close();
    }
}

通过查看结果,都是int类型输出的数字


执行结果

要想正常输出文字,需要使用其他的方法来写:

package javastudy;

import java.io.FileInputStream;
import java.io.IOException;

public class Test16 {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        FileInputStream fis=new FileInputStream("E:\\文件流笔记.txt"); //创建一个文件流对象,并定义Stringname路径
        int len=fis.available(); //available是返回此文件有多长
        byte [] data=new byte[len];//定义一个字节数组,来存放
        fis.read(data);
        System.out.println(new String(data));//使用字符装配字节
        fis.close();
    }
}
执行结果
  • 通过FileReader读取文本并显示
    (上面演示的是通过字节流显示文本,下面看一看,使用字符流显示文本)
package javastudy;

import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;

public class Test16 {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub

        FileReader fr=new FileReader("E:\\文件流笔记.txt");
        int ch=0;
        while((ch=fr.read())!=-1){  //读取文件,直至为-1,即为读完
            System.out.print((char)ch);//使用字符输出
        }
        fr.close();
    }
}
执行结果

你可能感兴趣的:(四、Java高级--7、FileInputStream和FileReader读取文本文件区别)