1. 引入依赖
<dependency>
<groupId>com.github.jiangxincodegroupId>
<artifactId>cpdetectorartifactId>
<version>1.0.10version>
dependency>
2. 工具类
import info.monitorenter.cpdetector.io.*;
import java.io.*;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
public class ReadUtil {
public static List<String> readFile(String filePath){//filePath为文件路径,charset为字符编码。通常使用UTF-8
List<String> res = new ArrayList<>();
File file = new File(filePath);
String charset = getCharsetName(file)
BufferedReader reader = null;
String tempString = null;
StringBuffer str = new StringBuffer();
try {
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), charset);
reader = new BufferedReader(isr);
while ((tempString = reader.readLine()) != null) {
res.add(tempString);
}
reader.close();
} catch (FileNotFoundException e) {
System.out.println("文件不存在");
return null;
} catch (IOException e) {
System.out.println("文件读取异常");
return null;
}
return res;
}
/**
* 获取文件编码方式
*/
public static String getCharsetName(File file) throws IOException {
String charsetName = "UTF-8";
CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();
detector.add(new ParsingDetector(false));
detector.add(JChardetFacade.getInstance());
detector.add(ASCIIDetector.getInstance());
detector.add(UnicodeDetector.getInstance());
Charset charset = detector.detectCodepage(file.toURI().toURL());
if (charset != null) charsetName = charset.name();
return charsetName;
}
public static void main(String[] args) throws IOException {
File file = new File("D:\\testDirs\\data\\test.dat");
System.out.println(getCharsetName(file));
}
}