直接上代码,两个类:一个工具类,一个测试类
工具类代码:
package org.example.study.util;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.io.*;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
public class FileUtil {
public static List<List<String>> readFileContent(String filePath) {
//String filePath = "D:\\test.del";
FileInputStream fileInputStream;
List<List<String>> dataList;
try {
fileInputStream = new FileInputStream(filePath);
Reader reader = new InputStreamReader(fileInputStream, Charset.forName("UTF-8"));
//Reader reader = new InputStreamReader(fileInputStream, Charset.forName("GBK"));
BufferedReader bufferedReader = reader instanceof BufferedReader ? (BufferedReader) reader : new BufferedReader(reader);
List<String> list = new ArrayList<>();
for (String line = bufferedReader.readLine(); line != null; line = bufferedReader.readLine()) {
list.add(line);
}
dataList = list.stream().filter(StringUtils::isNotBlank).map(line -> Arrays.asList(line.split("~@~"))).collect(Collectors.toList());
log.info("dataList.size()===={}", dataList.size());
log.info("dataList===={}", dataList);
for (List<String> stringList : dataList) {
log.info("stringlist===={}", stringList);
}
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
return dataList;
}
}
测试类代码:
package org.example.study.util;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
class FileUtilTest {
public static void main(String[] args) {
List<List<String>> list = FileUtil.readFileContent("D:\\\\test.del");
System.out.println("list.size====" + list.size());
System.out.println("list====" + list);
}
}
注意事项:
值得关注的是,这儿测试类中的文件 test.del ,这儿需要说明以下文件的编码格式。
大家看我写的文件内容:
411~@~20230613~@~工作~@~1
618~@~20230613~@~娱乐~@~3
710~@~20230613~@~购物~@~1
516~@~20230613~@~吃饭~@~3
然后保存文件的时候,默认是 ANSI 格式的,也就是相当于是 GBK,这时候测试运行程序,打印的内容中就会出现中文乱码的现象。所以,要么将程序中的 UTF-8 编码改成 GBK,将文件编码格式改成 UTF-8 。文件格式改成 UTF-8 的方法:右键文件---->打开方式---->记事本---->文件---->另存为 这时候就会看到 “保存” 按钮旁边有个 “编码”,默认是 ANSI,咱们改成 UTF-8 ,然后保存即可。如下图: