Java 读取大文件方法

简介:

需求:实际开发中读取文本文件的需求还是很多,如读取两个系统之间FTP发送文件,读取后保存到数据库中或日志文件的数据库中保存等。

为了测试首先利用数据库SQL生成大数据文件。

规则是 编号|姓名|手机号,如 10|张10|13900000010

利用下面语句可以生成10,000,000条数据。

SELECT LEVEL||'|'||''||LEVEL||'|'||(13900000000+LEVELFROM DUAL CONNECT BY LEVEL < 1000000;

实现如下:


  
  
  1. package com.test.common.util; 
  2.  
  3. import java.io.BufferedReader; 
  4. import java.io.File; 
  5. import java.io.FileInputStream; 
  6. import java.io.FileNotFoundException; 
  7. import java.io.FileReader; 
  8. import java.io.IOException; 
  9. import java.util.Scanner; 
  10.  
  11. import org.apache.commons.io.FileUtils; 
  12. import org.apache.commons.io.LineIterator; 
  13.  
  14. public class HandleTextFile { 
  15.      
  16.     // 使用commons-io.jar包的FileUtils的类进行读取 
  17.     public static void readTxtFileByFileUtils(String fileName) { 
  18.         File file = new File(fileName); 
  19.         try { 
  20.             LineIterator lineIterator = FileUtils.lineIterator(file, "UTF-8"); 
  21.             while (lineIterator.hasNext()) { 
  22.                 String line = lineIterator.nextLine(); 
  23.                 System.out.println(line); 
  24.             } 
  25.         } catch (IOException e) { 
  26.             e.printStackTrace(); 
  27.         } 
  28.     } 
  29.      
  30.     // 使用Scanner进行读取 
  31.     public static void readTxtByScanner(String fileName) { 
  32.         FileInputStream fileInputStream = null;  
  33.         Scanner scanner = null
  34.          
  35.         try { 
  36.             fileInputStream = new FileInputStream(fileName); 
  37.             scanner = new Scanner(fileInputStream, "UTF-8"); 
  38.             while (scanner.hasNext()) { 
  39.                 String line = scanner.nextLine(); 
  40.                 System.out.println(line); 
  41.             } 
  42.         } catch (FileNotFoundException e) { 
  43.             e.printStackTrace(); 
  44.         } finally { 
  45.             if (fileInputStream != null) { 
  46.                 try { 
  47.                     fileInputStream.close(); 
  48.                 } catch (IOException e) { 
  49.                     e.printStackTrace(); 
  50.                 } 
  51.             } 
  52.             if (scanner != null) { 
  53.                 scanner.close(); 
  54.             } 
  55.         } 
  56.          
  57.     } 
  58.  
  59.     // 使用cache进行读取 
  60.     public static void readTxtByStringBuffer(String fileName) throws IOException { 
  61.         File file = new File(fileName); 
  62.          
  63.         BufferedReader reader = null
  64.          
  65.         try { 
  66.             reader = new BufferedReader(new FileReader(file), 10 * 1024 * 1024); 
  67.             String stringMsg = null
  68.             while ((stringMsg = reader.readLine()) != null) { 
  69.                 System.out.println(stringMsg); 
  70.             } 
  71.             reader.close(); 
  72.         } catch (FileNotFoundException e) { 
  73.             e.printStackTrace(); 
  74.         }  
  75.     } 
  76.      
  77.     public static void main(String[] args) { 
  78.         try { 
  79.             HandleTextFile.readTxtByStringBuffer("D:\\test\\customer_info.txt"); 
  80.         } catch (IOException e) { 
  81.             e.printStackTrace(); 
  82.         } 
  83.     } 



作者:弘林

来源:51CTO

相关文章
|
4天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
28 4
|
14天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
35 17
|
9天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
8天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
13 2
|
10天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
23 4
|
13天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
13天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
16天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
13 3
|
18天前
|
Java 大数据 API
别死脑筋,赶紧学起来!Java之Steam() API 常用方法使用,让开发简单起来!
分享Java Stream API的常用方法,让开发更简单。涵盖filter、map、sorted等操作,提高代码效率与可读性。关注公众号,了解更多技术内容。
|
16天前
|
Java 开发者
在Java多线程编程中,选择合适的线程创建方法至关重要
【10月更文挑战第20天】在Java多线程编程中,选择合适的线程创建方法至关重要。本文通过案例分析,探讨了继承Thread类和实现Runnable接口两种方法的优缺点及适用场景,帮助开发者做出明智的选择。
13 2
下一篇
无影云桌面