java读取txt文件及乱码处理
2023-12-14 20:00:28
目录
一、java如何读取txt文件
方式1、文件流处理(FileInputStream)
FileInputStream有两种构造方式
- 采用文件路径构造
- 以文件对象构造
示例代码:
import java.io*;
public class MainTest{
public static void main(String args[]){
String filePath = "D:/test/a.txt";
FileInputStream fis = new FileInputStream(filePath);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
String strTmp = "";
while((strTmp = br.readLine())!=null){
System.out.println(strTmp);
}
br.close();
}
}
方式2、JDK11及以上版本
Path path = Paths.get("D:/test/a.txt");
String data = Files.readString(path);
System.out.println(data);
?方式3、JDK8
Path path = Paths.get("D:/aa.txt");
List<String> lines = Files.readLines(path);
jdk8?方式4、jdk8JDK8jdk8?一次性全部读取
Path path = Paths.get("D:/aa.txt");
byte[] data = Files.readAllBytes(path);
String result = new String(data, "utf-8");
二、java读取文件的乱码问题
场景1、使用maven导入类库:Cpdetector?
CodepageDetectorProxy codepageDetectorProxy = CodepageDetectorProxy.getInstance();
codepageDetectorProxy.add(JChardetFacade.getInstance());
// Charset就是字符集,可以用来解码byte数组为字符串
Charset charset = codepageDetectorProxy.detectCodepage(file.toURI().toURL());
场景2、二进制读取方式
? ? ? ? 2.1?使用DataInputStream?
DataInputStream din = new DataInputStream(new FileInputStream(file));
byte[] data = new byte[1024];
while(din.read(data) > 0) {
? ? // 处理数据
}
din.close();?
? ? ? ? 2.2 使用RandomAccessFile
RandomAccessFile randomFile = new RandomAccessFile(file, "r");
byte[] data = new byte[1024];
while(randomFile.read(data) > 0) {
// 处理数据
}
randomFile.close();
?? ? ? ? 2.3 DataInputStream 与 RandomAccessFile 的区别
????????RandomAccessFile可以通过移动文件指针改变读取的位置,可以按照几种基本类型直接读取数据,可以跳过一定的字节。
????????DataInputStream是输入流。??
文章来源:https://blog.csdn.net/m0_60769905/article/details/134996157
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!