package com.gqshao.file.util; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.gqshao.file.io.BufferedRandomAccessFile; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import java.io.*; import java.util.List; import java.util.Map; public class FileUtil { /** * 通过BufferedRandomAccessFile读取文件,推荐 * * @param file 源文件 * @param encoding 文件编码 * @param pos 偏移量 * @param num 读取量 * @return pins文件内容,pos当前偏移量 */ public static Map<String, Object> BufferedRandomAccessFileReadLine(File file, String encoding, long pos, int num) { Map<String, Object> res = Maps.newHashMap(); List<String> pins = Lists.newArrayList(); res.put("pins", pins); BufferedRandomAccessFile reader = null; try { reader = new BufferedRandomAccessFile(file, "r"); reader.seek(pos); for (int i = 0; i < num; i++) { String pin = reader.readLine(); if (StringUtils.isBlank(pin)) { break; } pins.add(new String(pin.getBytes("8859_1"), encoding)); } res.put("pos", reader.getFilePointer()); } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(reader); } return res; } /** * 通过RandomAccessFile读取文件,能出来大数据文件,效率低 * * @param file 源文件 * @param encoding 文件编码 * @param pos 偏移量 * @param num 读取量 * @return pins文件内容,pos当前偏移量 */ public static Map<String, Object> readLine(File file, String encoding, long pos, int num) { Map<String, Object> res = Maps.newHashMap(); List<String> pins = Lists.newArrayList(); res.put("pins", pins); RandomAccessFile reader = null; try { reader = new RandomAccessFile(file, "r"); reader.seek(pos); for (int i = 0; i < num; i++) { String pin = reader.readLine(); if (StringUtils.isBlank(pin)) { break; } pins.add(new String(pin.getBytes("8859_1"), encoding)); } res.put("pos", reader.getFilePointer()); } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(reader); } return res; } /** * 使用LineNumberReader读取文件,1000w行比RandomAccessFile效率高,无法处理1亿条数据 * * @param file 源文件 * @param encoding 文件编码 * @param index 开始位置 * @param num 读取量 * @return pins文件内容 */ public static List<String> readLine(File file, String encoding, int index, int num) { List<String> pins = Lists.newArrayList(); LineNumberReader reader = null; try { reader = new LineNumberReader(new InputStreamReader(new FileInputStream(file), encoding)); int lines = 0; while (true) { String pin = reader.readLine(); if (StringUtils.isBlank(pin)) { break; } if (lines >= index) { if (StringUtils.isNotBlank(pin)) { pins.add(pin); } } if (num == pins.size()) { break; } lines++; } } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(reader); } return pins; } }
- 浏览: 5043074 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (2844)
- java (1094)
- hadoop (37)
- jvm (39)
- hbase (11)
- sql (25)
- 异常 (83)
- div css (6)
- 数据库 (95)
- 有趣的code (15)
- struts2 (6)
- spring (124)
- js (44)
- 算法 (65)
- linux (36)
- hibernate (7)
- 中间件 (78)
- 设计模式 (2)
- 架构 (275)
- 操作系统 (91)
- maven (35)
- tapestry (1)
- mybatis (9)
- MQ (101)
- zookeeper (18)
- 搜索引擎,爬虫 (208)
- 分布式计算 (45)
- c# (7)
- 抓包 (28)
- 开源框架 (45)
- 虚拟化 (12)
- mongodb (15)
- 计算机网络 (2)
- 缓存 (97)
- memcached (6)
- 分布式存储 (13)
- scala (5)
- 分词器 (24)
- spark (104)
- 工具 (23)
- netty (5)
- Mahout (6)
- neo4j (6)
- dubbo (36)
- canal (3)
- Hive (10)
- Vert.x (3)
- docker (115)
- 分布式追踪 (2)
- spring boot (5)
- 微服务 (56)
- 淘客 (5)
- mesos (67)
- php (3)
- etcd (2)
- jenkins (4)
- nginx (7)
- 区块链 (1)
- Kubernetes (92)
- 驾照 (1)
- 深度学习 (15)
- JGroups (1)
- 安全 (5)
- 测试 (16)
- 股票 (1)
- Android (2)
- 房产 (1)
- 运维 (6)
- 网关 (3)
最新评论
-
明兜3号:
部署落地+业务迁移 玩转k8s进阶与企业级实践技能(又名:Ku ...
Kubernetes系统常见运维技巧 -
q328965539:
牛掰啊 资料收集的很全面
HDFS小文件处理解决方案总结+facebook(HayStack) + 淘宝(TFS) -
guichou:
fluent挂载了/var/lib/kubelet/pods目 ...
kubernetes上部署Fluentd+Elasticsearch+kibana日志收集系统 -
xu982604405:
System.setProperty("java.r ...
jmx rmi 穿越防火墙问题及jmxmp的替代方案 -
大漠小帆:
麻烦问下,“获取每个Item相似性最高的前N个Item”,这个 ...
协同过滤推荐算法在MapReduce与Spark上实现对比
发表评论
-
Kryo 使用指南
2017-12-05 20:14 20361、Kryo 的简介 Kryo 是一个快速序列化/ ... -
spring session序列化问题排查
2017-12-01 19:07 6280严重: Servlet.service() for ser ... -
利用junit对springMVC的Controller进行测试
2017-11-30 16:26 1451平时对junit测试service/D ... -
Java内存模型之重排序
2017-11-29 09:44 867在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重 ... -
pmd spotbugs 文档
2017-11-28 10:02 0https://pmd.github.io/pmd/pmd ... -
PMD、FindBug、checkstyle、sonar这些代码检查工具的区别?各自的侧重点是什么?
2017-11-28 10:01 2149可以说都是代码静态分析工具,但侧重点不同。pmd:基于源代码 ... -
阿里巴巴Java代码规约插件p3c-pmd使用指南与实现解析
2017-11-23 17:09 1608阿里巴巴Java代码规约插件安装 阿里Java代码规 ... -
静态分析工具PMD使用说明 (文章来源: Java Eye)
2017-11-23 17:07 1148质量是衡量一个软件是否成功的关键要素。而对于商业软件系统,尤 ... -
MyBatis 使用 MyCat 实现多租户的一种简单思路
2017-11-20 18:27 2851本文的多租户是基于多数据库进行实现的,数据是通过不同数据库进 ... -
Spring+MyBatis实现数据库读写分离方案
2017-11-20 17:15 1095百度关键词:spring mybatis 多数据源 读写分离 ... -
数据库连接池druid wallfilter配置
2017-11-20 11:38 1349使用缺省配置的WallFilter <be ... -
java restful 实体封装
2017-11-16 09:47 1602package com.mogoroom.bs.commo ... -
dak
2017-11-15 11:21 0package zzm; import jodd.ht ... -
Java内存模型之从JMM角度分析DCL
2017-11-15 09:35 645DCL,即Double Check Lock,中卫双重检查锁 ... -
Java 打印堆栈的几种方法
2017-11-14 09:36 4760java 中可以通过 eclipse 等工具直接打印堆栈, ... -
Servlet Session学习
2017-11-10 09:25 557HTTP 是一种"无状 ... -
浅析Cookie中的Path与domain
2017-11-10 09:26 1064Path – 路径。指定与co ... -
入分析volatile的实现原理
2017-11-08 09:47 691通过前面一章我们了解了synchronized是一个重量级的 ... -
Spring MVC-ContextLoaderListener和DispatcherServlet
2017-11-15 09:35 690Tomcat或Jetty作为Servlet ... -
搭建spring框架的时候,web.xml中的spring相关配置,可以不用配置ContextLoaderListener(即只配DispatcherServl
2017-11-07 18:27 1439搭建spring框架的时候,web.xml中的sprin ...
相关推荐
标题“JS快速读取TXT大数据.zip”所涉及的知识点主要集中在JavaScript(JS)技术上,特别是如何高效地处理大量文本数据。在这个场景中,我们关注的是在Internet Explorer(IE)浏览器中利用JavaScript来读取和展示大...
"大数据文本三剑客"指的是Linux环境中用于处理和分析大量文本数据的重要工具——grep、sed和awk。这些工具在大数据领域扮演着不可或缺的角色,因为它们能够高效地处理文本数据,进行搜索、替换、修改和过滤等操作。 ...
在IT行业中,处理数据是一项核心任务,特别是在数据...总的来说,读取和处理文本文件涉及到编程语言的基本操作、数据解析技巧以及高效的数据处理库。熟练掌握这些技能,将有助于在各种IT项目中有效地管理和分析数据。
3.1 读取网页招聘信息文本文件:首先,需要从招聘网站抓取或爬取招聘信息,这通常涉及到网络爬虫技术,以获取最新的、大量的招聘数据。 3.2 招聘信息文本分词:分词是文本预处理的关键步骤,通过将句子分割成词汇...
描述中提到的“若是你有几百万数据的一个文本,想把数据分割成每个1000条”,这表明我们需要处理的文本文件可能包含数百万行的数据,对这样的文件进行操作需要高效的策略。批处理脚本就是一种解决方案,它可以快速地...
启动Flume Agent时,它会读取配置文件并开始数据采集。 Flume提供了多种类型的Source,如Exec源执行Unix命令来收集数据,而Spool目录源则监视特定目录,当新文件出现时进行数据采集。这些源的灵活性使得Flume能够...
CSV(Comma Separated Values)是一种广泛使用的数据格式,它以纯文本形式存储表格数据,每行代表一个记录,列之间用逗号分隔。由于CSV文件的简单结构,它们可以被多种软件工具读取,包括电子表格程序(如Microsoft ...
在VB(Visual Basic)编程中,高效地读取文本文件是一项关键技能,特别是在处理大量数据时。本主题将深入探讨如何使用VB实现高速读取文本文件的方法,旨在提高程序的性能和效率。 首先,让我们了解VB中最常见的文本...
本文将探讨如何高效地删除文本文件中的重复行,重点介绍一个使用Pascal语言实现的解决方案,该方案能在短短0.3秒内处理含有100万行、100MB的文本文件。 首先,我们需要理解“删除重复行”的概念。在文本文件中,...
这在处理文本文件时特别实用,比如读取日志、CSV数据等。这个函数可能包括读取指定行的数据、处理行结束符(如换行符)以及错误处理等细节。 条件查询是高级功能,允许开发者根据特定条件筛选文件中的数据。这可能...
2. 使用pandas读取文本文件:read_table函数可以处理多种文本格式的数据文件,它同样会将文本数据转换为DataFrame对象。当文本文件没有明确的列名时,可以使用header=None让pandas自动分配默认列名,或者使用names...
1. 数据导入:Perl可以读取多种格式的文件,如CSV、JSON、XML等,将数据加载到内存中进行处理。通过Perl的内置模块,如Text::CSV或JSON,可以轻松处理这些格式。 2. 数据清洗:在大数据处理中,数据质量至关重要。...
"自动读取文件数据实例源码.rar"这个资源提供了一个全面的C#实现,它能帮助开发者理解和掌握如何在不同场景下高效地读取各种类型的数据文件。 首先,我们要了解C#中读取文件的基本方法。在C#中,`System.IO`命名...
4. **长文本读取**:在处理大量文本数据时,ABAP提供了`CL_ABAP_TEXTUTIL`类,它包含`READ_TEXT`方法,可以用于读取超过标准长度限制的文本。这对于存储用户评论、文档内容等长文本非常有用。 5. **大数据导出**:...
综上所述,"读取txt-jdbc导入百万级数据.rar"是一个涉及数据读取、数据库操作、性能优化等多个技术点的实战案例,对于理解和掌握大规模数据处理有很高的参考价值。通过学习和实践这个案例,开发者可以提升自己在处理...
文本文件压缩是信息处理中的一个重要领域,特别是在大数据和存储有限的场景下,高效的数据压缩技术显得尤为关键。Huffman编码是一种基于频率的无损数据压缩方法,由David A. Huffman在1952年提出,它是数据结构课程...
- 对于非常大的文本文件,可以考虑分块读取,避免一次性加载所有数据导致内存压力过大。 - 如果数据有特定的排序需求,可以在写入新文件时保持原有顺序。 - 可以考虑使用多线程或异步处理来提高处理速度,但需要...
1. **快速打开**:这类编辑器采用了高效的文件读取算法,能够在短时间内加载上GB大小的文本文件,极大地提高了工作效率。它能够避免因文件过大导致的系统资源占用过高,使得用户无需等待长时间的加载过程。 2. **...
总的来说,这个Java项目展示了如何利用Java 8的Stream API和并行流特性来高效地处理文本文件,实现行级别的去重功能。这种技术对于处理大量文本数据,尤其是需要进行清洗和预处理的情况非常有用。在实际应用中,可以...
在IT领域,文本文件处理是一项基础且重要的任务。在日常工作中,我们经常遇到需要对大量文本数据进行操作的情况,比如电子图书的整理、数据分析、日志分析等。在这个场景下,“文本文件(*.txt)分割合并”是一个非常...