数据学习
登录
注册
原创博客
期刊会议
学术世界
期刊出版社
领域期刊
SCI/SCIE/SSCI/EI简介
期刊列表
会议列表
所有期刊分区
学术期刊信息检索
JCR期刊分区查询
CiteScore期刊分区查询
中科院期刊分区查询
领域期刊分区
管理 - UTD24期刊列表
管理 - AJG(ABS)期刊星级查询
管理 - FMS推荐期刊列表
计算机 - CCF推荐期刊会议列表
高校期刊分区
南大核心(CSSCI)
合工大小核心
合工大大核心
AI资源仓库
AI领域与任务
AI研究机构
AI学术期刊
AI论文快讯
AI数据集
AI开源工具
AI模型
AI模型概览图
AI模型月报
AI基础大模型
AI预训练大模型
数据推荐
网址导航
我的网址导航
程序员必备网站
Java读取和操作上G文本数据
标签:
#java#
#文本挖掘#
#文本预处理#
时间:2016-04-06 21:30:43
作者:十七岁的雨季
# 在处理文本时,经常遇到超过1g存储的数据,直接简单的读取,可能遇到java空间不足的问题,为解决此问题,可将大文本数据按照行进行切分为很多块,并将每一块存储为一个文本 ```java public class BigDataRead { public static void main(String[] args) throws IOException { long timer = System.currentTimeMillis(); int bufferSize = 20 * 1024 * 1024;//设读取文件的缓存为20MB //建立缓冲文本输入流 File file = new File("I:/qianyang/预测数据/user_contentdetection_qianyang"); FileInputStream fileInputStream = new FileInputStream(file); BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream); //注意这里有时会乱码,根据自己的文本存储格式,进行调整 InputStreamReader inputStreamReader = new InputStreamReader(bufferedInputStream,"utf-8"); BufferedReader input = new BufferedReader(inputStreamReader, bufferSize); //要分割的块数减一,这里表示分割为31个文件 int splitNum = 30; //12046表示我的输入本文的行数,我的文本12046行,由于每行文本较长,所有存储占用较大 int fileLines = 12046; //分割后存储每个块的行数 long perSplitLines = fileLines / splitNum; for (int i = 0; i <= splitNum; ++i){ //分割 //每个块建立一个输出 BufferedWriter output = new BufferedWriter( new OutputStreamWriter( new FileOutputStream( new File("I:/qianyang/预测数据/分块/part" + i + ".txt")),"gbk")); String line = null; //逐行读取,逐行输出 for (long lineCounter = 0; lineCounter < perSplitLines && (line = input.readLine()) != null; ++lineCounter) { output.append(line + "\r"); } output.flush(); output.close(); output = null; } input.close(); timer = System.currentTimeMillis() - timer; //我的1.6g数据不要1分钟,分割完毕 System.out.println("处理时间:" + timer); } } ```
欢迎大家关注DataLearner官方微信,接受最新的AI技术推送
相关博客
最热博客