先创建字节流对象,根据已创建的字节流对象再创建字符流对象,然后在调用字符流的相关方法。

这样,文本数据就不会出现乱码。

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

public class ReadFile {

	public static void main(String[] args) {

		// 创建所需读取文件的路径的输入窗口
		System.out.println("请输入你需要读取文件的路径:");
		Scanner sc = new Scanner(System.in);
		
		// 自定义read方法,将给定路径的文件内容打印到控制台上
		read(sc.nextLine());
		
		sc.close();
		}
	

	private static void read(String file) {
		
		// 创建字符流对象,并根据已创建的字节流对象创建字符流对象
		FileInputStream fis = null;
		InputStreamReader isr = null;
		BufferedReader raf = null;
		
		try {
			fis = new FileInputStream(file);
			isr = new InputStreamReader(fis);
			raf = new BufferedReader(isr);
			
			String s = null;
			
			// 读取文件内容,并将其打印
			while((s = raf.readLine()) != null) {
				System.out.println(s);
			
			}
		
		} catch (Exception e) {
			
			e.printStackTrace();
		} finally {
			
			try {
				raf.close();
				
			} catch (IOException e) {
				
				e.printStackTrace();
			}
		}
		
	}

}