Java以行的方式,快速读取大文件的2种实现方法,附完整代码和测试结果

x33g5p2x  于2022-08-17 转载在 Java  
字(1.4k)|赞(0)|评价(0)|浏览(934)

Java读取1272447行数据,存入List中,用时:396毫秒。

直接上代码,已做备忘。 

代码如下:

  1. package com.example.springbootdownloadfile.file;
  2. import java.io.*;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. public class ReadFileUtil {
  6. public static void main(String[] args) {
  7. long start=System.currentTimeMillis();
  8. String fileName="E:\\resource\\res2.txt";
  9. List<String> list=fileReadToArray(fileName);
  10. long start2=System.currentTimeMillis();
  11. System.out.println("读取"+list.size()+"行,用时:"+(start2-start)+"毫秒");
  12. list=inputStreamReadertoArray(fileName);
  13. long start3=System.currentTimeMillis();
  14. System.out.println("读取"+list.size()+"行,用时:"+(start3-start2)+"毫秒");
  15. }
  16. public static List fileReadToArray(String filePath) {
  17. // 使用ArrayList来存储每行读取到的字符串
  18. List arrayList = new ArrayList<>();
  19. try {
  20. FileReader f = new FileReader(filePath);
  21. BufferedReader b = new BufferedReader(f);
  22. String s;
  23. //判断是否到一行字符串
  24. while ((s = b.readLine()) != null) {
  25. arrayList.add(s);
  26. }
  27. b.close();
  28. f.close();
  29. } catch (IOException e) {
  30. e.printStackTrace();
  31. }
  32. return arrayList;
  33. }
  34. public static List<String> inputStreamReadertoArray(String filePath) {
  35. List<String> arrayList = new ArrayList<>();
  36. try {
  37. File file = new File(filePath);
  38. InputStreamReader i = new InputStreamReader(new FileInputStream(file));
  39. BufferedReader b = new BufferedReader(i);
  40. // 按行读取字符串
  41. String s;
  42. while ((s = b.readLine()) != null) {
  43. arrayList.add(s);
  44. }
  45. b.close();
  46. i.close();
  47. } catch (IOException e) {
  48. e.printStackTrace();
  49. }
  50. return arrayList;
  51. }
  52. }

测试结果:

相关文章

最新文章

更多