我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java中怎么处理大文本文件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java中怎么处理大文本文件

今天就跟大家聊聊有关Java中怎么处理大文本文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

集算器与Java应用程序的集成结构如下:

Java中怎么处理大文本文件

下面举例说明集算器协助JAVA查询大文本的基本过程。源数据sOrder.txt如下:

Java中怎么处理大文本文件

要查询起止时间是startDate、endDate之间,金额大于argAmount的订单,只需使用如下代码:

A1:以游标方式打开文件。@t表示将第1行读为列名。

A2:进行结构化查询,结果为游标。

A3:执行游标,将结果读入内存,如下:

Java中怎么处理大文本文件

JAVA主程序可以JDBC的方式调用集算器脚本,代码如下:

Class.forName("com.esproc.jdbc.InternalDriver");

con=DriverManager.getConnection("jdbc:esproc:local://");

//调用集算器脚本(类似存储过程),其中searchbig是dfx的文件名

st=(com. esproc.jdbc.InternalCStatement)con.prepareCall("call searchbig");

//设置参数

st.setObject(1,"2010-01-01");

st.setObject(2,"2010-12-31");

st.setObject(3,2000);

//执行脚本

st.execute;

//获取结果集

ResultSetrs = st.getResultSet;

……

返回值是符合JDBC标准的ResultSet对象,调用集算器脚本和访问数据库的方法完全一样,熟悉JDBC的程序员可以很快掌握。

对于上面这类较简单的代码,还可以直接将脚本写在JDBC调用中,多行语句之间用\n分隔即可,类似执行一句较复杂的SQL,这样可以不必再保存一个脚本文件。

st = (com.esproc.jdbc.InternalCStatement)con.createStatement;

ResultSet  rs1 =st.executeQuery("=file(\"D:\\sOrder.txt\").import@t\n"  +"=A1.select(OrderDate>=date(\"2010-01-01\")  &&OrderDate<=date(\"2010-12-31\") &&  Amount>2000)\n"+

"=A2.fetch");

集算器会返回最后一个表达式的值。

如果查询结果内存装不下,可以在集算器中直接返回游标(即去掉A3代码),在JAVA中只需设置每批次读取的记录数即可正常读取,具体代码如下:

st.setFetchSize(1000)

关于集算器JDBC的部署和调用的更详细信息可参考集算器集成应用之被JAVA调用

集算器还可以实现多线程并行计算,最简单方法就是在上述代码的cursor函数中使用@m,这表示多线程读取文件。

也可以手工分段,在读取和计算部分都使用多线程并行计算,代码如下:

A1:用8个游标打开文件,每次读取文件的指定部分。~表示循环变量,依次是1、2&hellip;8,@z表示将文件按字节数大致分为几部分,只读取其中一部分,集算器会自动去头补尾,以保证取出的数据是整行。

A2:针对每个游标执行查询。

A3:并行执行游标,并合并结果。@x表示合并的对象是游标,@m表示并行计算。需要注意的是,函数conj无法保证结果顺序和源数据一致。

上述代码使用了集算器内置的并行计算函数,如果计算过程较复杂,或内存可以装下计算结果,则适合用显式并行计算语句。代码如下:

Java中怎么处理大文本文件

A1:设定并行数。

A2:并行执行代码,作用范围是缩进的B2-B3。to(A1)=[1,2&hellip;8]表示每个线程的入口参数。线程内部可用A2来获取入口参数,线程外部可用A2获取所有线程的计算结果。

B3:查询游标,将结果读入内存,并返回给主线程。

A4:按顺序合并各线程的计算结果。

对于有序数据,可以用二分法来提高查询性能。比如数据已按Client和OrderID排序,现在要根据参数argClient和argOrder找出相应的记录,可以使用下面的代码:

Java中怎么处理大文本文件

begin,end是二分法的起止位置,m是中间位置。

B4:按字节数定位到中间位置,打开游标读入一条记录,集算器会自动实现去头补尾,取出完整记录。@x表示取出记录后立即关闭游标。

B5-C6:如果定位成功,则将当前记录存储在C5。

B7-C8:如果定位不成功,则继续比较集合大小并重新设置begin,end。

A9:将C5中的计算结果显式地返回给JDBC。

看完上述内容,你们对Java中怎么处理大文本文件有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java中怎么处理大文本文件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java中怎么处理大文本文件

今天就跟大家聊聊有关Java中怎么处理大文本文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。集算器与Java应用程序的集成结构如下:下面举例说明集算器协助JAVA查询大文本的基本过
2023-06-17

java读取大文件文本怎么处理

处理大文件文本可以使用Java中的流式处理,以避免一次性将整个文件加载到内存中。以下是一个示例代码,使用BufferedReader逐行读取大文件文本:```javaimport java.io.BufferedReader;import
2023-09-20

C#中怎么处理文本文件

这期内容当中小编将会给大家带来有关C#中怎么处理文本文件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#处理文本文件C#处理文本文件是一种常用的文件格式,所以如何处理文本文件也就成为编程的一个重点。本文
2023-06-18

git文件过大怎么处理

在使用 Git 进行文件版本控制时,有时候会遇到文件过大的情况。当文件过大,可能会导致 Git 执行速度变慢、内存占用增加甚至 Git 提交上传失败等问题。本文将介绍几种处理 Git 文件过大的方法。一、使用 Git LFS Git Lar
2023-10-22

Linux下怎么处理文本文件内容中的^M

这篇文章主要介绍了Linux下怎么处理文本文件内容中的^M,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Windows上写好的文件,在Linux或者Unix下打开,每一行都会
2023-06-13

python中怎么处理文本

这篇文章给大家介绍python中怎么处理文本,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python处理文本使用方法我们的目的是把记录中包含January的名字列出来,符合“名字 -- 描述”格式的行为有效行。编写p
2023-06-17

java如何读取大文件文本

Java可以使用`BufferedReader`类来读取大文件文本。`BufferedReader`类提供了一个`readLine()`方法,可以逐行读取文本文件。以下是一个读取大文件文本的示例代码:```javaimport java.i
2023-08-08

使用Shell脚本怎么逐行处理文本文件

使用Shell脚本怎么逐行处理文本文件?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.通过read命令完成.read 命令从标准输入中读取一行,并把输入行的每
2023-06-14

怎么用批处理重命名文本文件名

这篇文章主要为大家展示了“怎么用批处理重命名文本文件名”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么用批处理重命名文本文件名”这篇文章吧。实现代码1@echo off&setlocal en
2023-06-09

Java中如何用内存映射处理大文件

本篇内容介绍了“Java中如何用内存映射处理大文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!package test; import
2023-06-17

Java中怎么处理中文参数

本篇文章给大家分享的是有关Java中怎么处理中文参数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 GET中文乱码 //获取表单提交的姓名 S
2023-06-02

Caffe中怎么处理文本数据

在Caffe中处理文本数据通常需要进行以下步骤:数据预处理:将文本数据转换成适合Caffe处理的格式,一般是将文本数据转换成图片格式或者特征向量格式。这可以通过使用文本编码技术(如词袋模型、word2vec等)将文本转换成固定长度的向量表示
Caffe中怎么处理文本数据
2024-03-07

JAVA怎么下载大文件

您可以使用Java的URL类和URLConnection类来下载大文件。下面是一个简单的示例代码:```javaimport java.io.BufferedInputStream;import java.io.FileOutputStre
2023-08-25

Java中怎么读取文件夹大小

今天就跟大家聊聊有关Java中怎么读取文件夹大小,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。(一)单线程递归方式package com.taobao.test; import ja
2023-06-17

VB.NET中怎么处理FTP文件

VB.NET中怎么处理FTP文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。VB.NET处理FTP方法一:使用Ftp.exe,通过process类来调用它。Imports
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录