import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public static void main(String[] args) {
     String filePath = "D:\\黄帝内经白话文.txt";
     try {
         FileInputStream fis = new FileInputStream(filePath);
         InputStreamReader isr = new InputStreamReader(fis,detectEncoding(filePath));
         BufferedReader br = new BufferedReader(isr);
         String line;
         while ((line = br.readLine()) != null) {
             System.out.println(line);
         }
         br.close();
     } catch (IOException e) {
         e.printStackTrace();
     }
 }
 
public static String detectEncoding(String filePath) throws IOException {
    try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath)))){
        br.mark(1000);
        String line = br.readLine();
        if (line != null) {
            if (line.startsWith("\uFEFF")) {
                return "UTF-8";
            } else if (line.startsWith("\uFFFE")) {
                return "UTF-16LE";
            } else if (line.startsWith("\u0000\uFEFF")) {
                return "UTF-16BE";
            }
        }
        return "GBK";
    }
}