- 浏览: 1040913 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
/**
* 大数据排序合并
*
* @param args
*/
public static void main(String[] args) throws IOException {
// 写入文件的路径
String filePath = "D:\\456";
// 切分文件的路径
String sqlitFilePath = "D:\\456\\123";
//数据的个数
int CountNumbers=10000000;
//子文件的个数
int CountFile=10;
//精度
int countAccuracy=30*CountFile;
long startNumber=System.currentTimeMillis();
// 写入大数据文件
WriteData(filePath,CountNumbers);
System.out.println("存储完毕");
// 将大数据文件切分到另外的十个小文件中
sqlitFileDate(filePath, sqlitFilePath,CountFile);
System.out.println("文件切割完毕!");
// 把每个文件的数据进行排序
singleFileDataSort(sqlitFilePath,CountFile);
System.out.println("每个子文件排序完毕!");
//精度调整,十个文件数据进行比较整合
deathDataFile(filePath,sqlitFilePath,countAccuracy,CountFile);
System.out.println("整合完毕");
long stopNumber=System.currentTimeMillis();
System.out.println("耗时"+(stopNumber-startNumber)/1000+"毫秒");
}
// 写入大数据文件
public static void WriteData(String path,int CountNumbers) throws IOException {
path = path + "\\12114.txt";
FileWriter fs = new FileWriter(path);
BufferedWriter fw=new BufferedWriter(fs);
for (int i = 0; i < CountNumbers; i++) {
fw.write(new Random().nextInt(Integer.MAX_VALUE) + "\r\n");
}
fw.close();
fs.close();
}
// 将大数据文件切分到另外的十个小文件中
public static void sqlitFileDate(String filepath, String sqlitPath,
int CountFile) throws IOException {
FileWriter fs = null;
BufferedWriter fw=null;
FileReader fr = new FileReader(filepath + "\\12114.txt");
BufferedReader br = new BufferedReader(fr); // 读取获取整行数据
int i = 1;
LinkedList WriterLists=new LinkedList(); //初始化文件流对象集合
LinkedList fwLists=new LinkedList();
for (int j = 1; j <= CountFile; j++) {
//声明对象
fs = new FileWriter(sqlitPath + "\\12" + j + ".txt",false);
fw=new BufferedWriter(fs);
//将对象装入集合
WriterLists.add(fs);
fwLists.add(fw);
}
//判断是文件流中是否还有数据返回
while (br.ready()) {
int count=1;//初始化第一文件流
for (Iterator iterator = fwLists.iterator(); iterator.hasNext();) {
BufferedWriter type = (BufferedWriter) iterator.next();
if(i==count)//判断轮到第几个文件流写入数据了
{
//写入数据,跳出,进行下一个文件流,下一个数据的写入
type.write(br.readLine() + "\r\n");
break;
}
count++;
}
//判断是否到了最后一个文件流了
if (i >= CountFile) {
i = 1;
} else
i++;
}
br.close();
fr.close();
for (Iterator iterator = fwLists.iterator(); iterator.hasNext();) {
BufferedWriter object = (BufferedWriter) iterator.next();
object.close();
}
//遍历关闭所有子文件流
for (Iterator iterator = WriterLists.iterator(); iterator.hasNext();) {
FileWriter object = (FileWriter) iterator.next();
object.close();
}
}
// 把每个文件的数据进行排序
public static void singleFileDataSort(String path1,int CountFile) throws IOException {
LinkedList nums = null;
for (int i = 1; i <= CountFile; i++) {
nums = new LinkedList();
String path = path1 + "\\12" + i + ".txt";
try {
FileReader fr = new FileReader(path);
BufferedReader br = new BufferedReader(fr);
while (br.ready()) {
// 将读取的单个数据加入到集合里面
nums.add(Integer.parseInt(br.readLine()));
}
// 对集合进行排序
Collections.sort(nums);
// 将排序好的数据写入源文件
numberSort(nums, path);
br.close();
fr.close();
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 对每个文件数据进行排序,再写入源文件
public static void numberSort(LinkedList list, String path) {
try {
FileWriter fs = new FileWriter(path);
BufferedWriter fw=new BufferedWriter(fs);
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
fw.write(object + "\r\n");
}
fw.close();
fs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 文件数据最终整合(精度调整)
public static void deathDataFile(String filepath, String sqlitFilePath1,
int countAccuracy, int CountFile) throws IOException {
LinkedList nums = new LinkedList(); //添加数据,进行排序
Object temp = null; // 记录每次排序剩下的最后一个数字
boolean ispass = false;
LinkedList ispasses = null; //记录数据文件的状态信息
FileWriter fs = new FileWriter(filepath + "\\Sort.txt", false); //创建文件流,以便整合的数据写入
BufferedWriter bw=new BufferedWriter(fs);
FileReader fr = null; //声明读取文件流
BufferedReader br = null; //声明BufferedReader
LinkedList WriterLists = new LinkedList(); // 初始化文件流对象集合
LinkedList WriterListFile = new LinkedList();
for (int j = 1; j <= CountFile; j++) {
// 声明对象,开启所有子文件流访问所有子文件的数据
fr = new FileReader(sqlitFilePath1 + "\\12" + j + ".txt");
//开启所有BufferedReader,方便下次的整行的读取
br = new BufferedReader(fr);
// 将所有 FileReader对象装入集合
WriterListFile.add(fr);
// 将所有 BufferedReader对象装入集合
WriterLists.add(br);
}
for (;;) {
// 将十个源文件的是否有数据情况存入集合,以方便后面做判断
ispasses = new LinkedList();
// 分别读取十个源文件的单个数据
for (Iterator iterator = WriterLists.iterator(); iterator.hasNext();) {
BufferedReader object = (BufferedReader) iterator.next();
Object obj = null;
while (object.ready()) {
//添加所有文件流的每次的数据
nums.add(Integer.parseInt(object.readLine().toString()));
break;
}
if (object.ready() == false)
ispasses.add("true"); //将各文件中的数据状态存入集合中
}
// 决断是否是第一次进来
if (nums.size() % countAccuracy == 0 && ispass == false) {
// 对集合进行排序
Collections.sort(nums);
// 接收最大的数据,其它的数据写入总排序文件
temp = numberSortData(nums, filepath, false, countAccuracy, bw);
//重新初始化集合
nums = new LinkedList();
// 添加上一组比较剩下的数据
nums.add(temp);
ispass = true;
// 记录源文件的数据数量,以便下次的遍历
continue;
}
if (ispass) {
if (nums.size() % countAccuracy == 1 && nums.size() > 1) {
// 对集合进行排序
Collections.sort(nums);
// 接收最大的数据,其它的数据写入总排序文件
temp = numberSortData(nums, filepath, true, countAccuracy,
bw);
nums = new LinkedList();
nums.add(temp);
continue;
}
}
// 记录下一组数据的位置
// 判断是不是十个文件都没有数据
if (ispasses.size() == CountFile) {
Collections.sort(nums);
temp = numberSortData(nums, filepath, true, countAccuracy, bw);
nums = new LinkedList();
break;
}
}
bw.close();
//关闭写入流
fs.close();
//关闭所有的BufferedReader
for (Iterator iterator = WriterLists.iterator(); iterator.hasNext();) {
BufferedReader object2 = (BufferedReader) iterator.next();
object2.close();
}
//关闭所有的FileReader
for (Iterator iterator = WriterListFile.iterator(); iterator.hasNext();) {
FileReader object = (FileReader) iterator.next();
object.close();
}
}
// 对数据进行排序,写入最终文件中(精度调整)
public static Object numberSortData(LinkedList list, String filePath,
boolean ispass, int countAccuracy,BufferedWriter fs) {
Object temp = 0; //记录最后一个值
int tempCount = 0; //记录写入的数据位置
try {
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
// 判断是否是最后一个数
if (tempCount == list.size() - 1) {
// 判断集合里面不足一百個數了
if (list.size() < countAccuracy + 1 && ispass) {
temp = null;
} else {
temp = object;
break;
}
}
// 写入数据源
fs.write(object + "\r\n");
// 记录数据的下标
tempCount++;
}
} catch (IOException e) {
e.printStackTrace();
}
return temp;
}
发表评论
-
JVM调优总结
2019-07-10 17:14 318https://www.cnblogs.com/andy-zh ... -
JAVA RESULTSET 使用详解
2012-03-20 21:01 3114调用ResultSet中的last()方法时,提示: java ... -
JAVA采用JDBC执行批处理操作注意的问题
2012-03-20 20:50 1936让我们看看如何使用JDBC API在Java中执行批量插入。虽 ... -
java 各种加密算法详细比较
2012-03-15 11:07 2236本篇内容简要介绍BASE64、MD5、SHA、HMAC几种加密 ... -
JAVA 连接池,方便在平时使用
2012-02-21 15:03 1000java连接池使用 -
Java动态代理实现
2012-02-28 09:19 965Java动态代理实现 在目前的Java开发包中包含 ... -
Java Socket实战之五 使用加密协议传输对象
2012-02-16 13:49 1084本文地址:http://blog.csdn.net/kongx ... -
Java Socket实战之四 传输压缩对象
2012-02-16 13:48 974转载:http://blog.csdn.net/kongxx/ ... -
Java Socket实战之三 传输对象
2012-02-16 13:48 639转载:http://blog.csdn.net/kongxx/ ... -
Java Socket实战之二 多线程通信
2012-02-16 13:47 1112本文地址:http://blog.csdn.net/kongx ... -
Java Socket实战之一 单线程通信
2012-02-16 13:46 978转载:http://blog.csdn.net/kongx ... -
java5 新增线程池的使用
2012-02-09 09:26 1109package net.itdos.concurrent; ... -
P2P之UDP穿透NAT的原理与实现
2012-01-11 11:03 1212关键词: P2P UDP NAT 原理 穿透 Traveral ... -
火车票网上订票软件
2012-01-11 09:05 1870JAVA程序GOHOME自动抢票成功!非常棒~~~不多说,直接 ... -
java tcp/ip 通讯服务端和客户端
2011-12-15 08:20 1293java tcp/ip 通讯服务端和客户端 -
java 读取服务器上的某个文件,并解决UTF-8 BOM文件的问号问题
2011-11-28 15:16 1341JAVA读取UTF-8 BOM文件的时候会在文件头产生一个?号 ... -
JAVA 多线程学习笔记
2011-10-12 09:03 1014JAVA 多线程学习笔记 -
XBlink 1.0.0版发布,更轻、更快、更好用
2011-10-09 14:47 1273XBlink 1.0.0版发布,更轻、更快、更好用。 ... -
db4o 文件整理(收缩)
2011-09-29 22:26 1413一直都不敢大胆使用db4o,不是因为它不好用,不稳定,而 ... -
网站应用通过139邮箱发送短信做到日志提醒功能
2011-09-15 09:36 1781首先在139注册一个邮箱,然后再邮箱设置中设置收到邮件通过短信 ...
相关推荐
使用Java写入大数据文件的方法,分文件写入。
// for循环保证只写入count个byte, 否则会写入1024个byte for(i=0; i; i++){ out.write(buffer[i]); } } in.close(); out.close(); System.out.println("Success!"); } catch (FileNotFoundException e) { ...
javaIO简单的写入读取文件 资源源于不但搜索,自由源于不但努力
NULL 博文链接:https://yue1132.iteye.com/blog/1751504
在我们需求中需要读取一个csv文件的数据,但是只有旧的csv的几列数据再新写入一个csv文件,而且在旧的数据有空的数据,需要判断旧的csv的空值。可能写的存在不完善!但是应用的需求里面还是能用的
改程序实现了简单的java的文件读取以及写入的操作
主要介绍了Python3实现将本地JSON大数据文件写入MySQL数据库的方法,涉及Python针对json大数据文件的逐行读取、mysql数据库写入等相关操作技巧,需要的朋友可以参考下
java 读取写入csv
格式化文件操作,将数据按照模板写入新文件,正则表达式替换模板指定内容,文件读写,stateprocess.java 项目运行文件
java利用io技术创建文件夹、读取txt文件、写入txt文件(覆盖、不覆盖均有)
shp文件:地理信息系统,也被称作GIS,它主要的扩展类型是SHAPEFILE (.SHP),一个包含了矢量地理空间数据的流行文件格式,描述了几何形态,点,线和多边形...该方法通过java代码实现将shp文件的数据读取以及存入数据库
java读取和写入EXCEL文件,在myeclipse平台上运行!!
Java保存与读取文件代码示例,super("存储与读取对象"); //调用父类构造函数 Container container=getContentPane(); //得到容器 Icon imageIcon=new ImageIcon("image.gif"); //实例化一个图标 ...
读取 写入 读取写入文本文件 读取 写入 读取写入文本文件 注意 out 关键字
Java 读取 Excel 写入 Excel
Java实现文件复制,File文件读取,写入,IO流的读取写入
行业分类-设备装置-大数据的写入方法和装置、读取方法和装置及处理系统.zip
IMG文件写入读取工具