fw.write(newRandom().nextInt(Integer.MAX_VALUE)+"\r\n");
}
fw.close();
fs.close();
}
//将大数据文件切分到另外的十个小文件中
publicstaticvoidsqlitFileDate(Stringfilepath,StringsqlitPath,
intCountFile)throwsIOException{
FileWriterfs=null;
BufferedWriterfw=null;
FileReaderfr=newFileReader(filepath+"\\12114.txt");
BufferedReaderbr=newBufferedReader(fr);//读取获取整行数据
inti=1;
LinkedListWriterLists=newLinkedList(); //初始化文件流对象集合
LinkedListfwLists=newLinkedList();
for(intj=1;j<=CountFile;j++){
//声明对象
fs=newFileWriter(sqlitPath+"\\12"+j+".txt",false);
fw=newBufferedWriter(fs);
//将对象装入集合
WriterLists.add(fs);
fwLists.add(fw);
}
//判断是文件流中是否还有数据返回
while(br.ready()){
intcount=1;//初始化第一文件流
for(Iteratoriterator=fwLists.iterator();iterator.hasNext();){
BufferedWritertype=(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(Iteratoriterator=fwLists.iterator();iterator.hasNext();){
BufferedWriterobject=(BufferedWriter)iterator.next();
object.close();
}
//遍历关闭所有子文件流
for(Iteratoriterator=WriterLists.iterator();iterator.hasNext();){
FileWriterobject=(FileWriter)iterator.next();
object.close();
}
}
//把每个文件的数据进行排序
publicstaticvoidsingleFileDataSort(Stringpath1,intCountFile)throwsIOException{
LinkedListnums=null;
for(inti=1;i<=CountFile;i++){
nums=newLinkedList();
Stringpath=path1+"\\12"+i+".txt";
try{
FileReaderfr=newFileReader(path);
BufferedReaderbr=newBufferedReader(fr);
while(br.ready()){
//将读取的单个数据加入到集合里面
nums.add(Integer.parseInt(br.readLine()));
}
//对集合进行排序
Collections.sort(nums);
//将排序好的数据写入源文件
numberSort(nums,path);
br.close();
fr.close();
}catch(NumberFormatExceptione){
e.printStackTrace();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
//对每个文件数据进行排序,再写入源文件
publicstaticvoidnumberSort(LinkedListlist,Stringpath){
try{
FileWriterfs=newFileWriter(path);
BufferedWriterfw=newBufferedWriter(fs);
for(Iteratoriterator=list.iterator();iterator.hasNext();){
Objectobject=(Object)iterator.next();
fw.write(object+"\r\n");
}
fw.close();
fs.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
//文件数据最终整合(精度调整)
publicstaticvoiddeathDataFile(Stringfilepath,StringsqlitFilePath1,
intcountAccuracy,intCountFile)throwsIOException{
LinkedListnums=newLinkedList(); //添加数据,进行排序
Objecttemp=null; //记录每次排序剩下的最后一个数字
booleanispass=false;
LinkedListispasses=null; //记录数据文件的状态信息
FileWriterfs=newFileWriter(filepath+"\\Sort.txt",false); //创建文件流,以便整合的数据写入
BufferedWriterbw=newBufferedWriter(fs);
FileReaderfr=null; //声明读取文件流
BufferedReaderbr=null; //声明BufferedReader
LinkedListWriterLists=newLinkedList();//初始化文件流对象集合
LinkedListWriterListFile=newLinkedList();
for(intj=1;j<=CountFile;j++){
//声明对象,开启所有子文件流访问所有子文件的数据
fr=newFileReader(sqlitFilePath1+"\\12"+j+".txt");
//开启所有BufferedReader,方便下次的整行的读取
br=newBufferedReader(fr);
//将所有FileReader对象装入集合
WriterListFile.add(fr);
//将所有BufferedReader对象装入集合
WriterLists.add(br);
}
for(;;){
//将十个源文件的是否有数据情况存入集合,以方便后面做判断
ispasses=newLinkedList();
//分别读取十个源文件的单个数据
for(Iteratoriterator=WriterLists.iterator();iterator.hasNext();){
BufferedReaderobject=(BufferedReader)iterator.next();
Objectobj=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=newLinkedList();
//添加上一组比较剩下的数据
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=newLinkedList();
nums.add(temp);
continue;
}
}
//记录下一组数据的位置
//判断是不是十个文件都没有数据
if(ispasses.size()==CountFile){
Collections.sort(nums);
temp=numberSortData(nums,filepath,true,countAccuracy,bw);
nums=newLinkedList();
break;
}
}
bw.close();
//关闭写入流
fs.close();
//关闭所有的BufferedReader
for(Iteratoriterator=WriterLists.iterator();iterator.hasNext();){
BufferedReaderobject2=(BufferedReader)iterator.next();
object2.close();
}
//关闭所有的FileReader
for(Iteratoriterator=WriterListFile.iterator();iterator.hasNext();){
FileReaderobject=(FileReader)iterator.next();
object.close();
}
}
//对数据进行排序,写入最终文件中(精度调整)
publicstaticObjectnumberSortData(LinkedListlist,StringfilePath,
booleanispass,intcountAccuracy,BufferedWriterfs){
Objecttemp=0; //记录最后一个值
inttempCount=0; //记录写入的数据位置
try{
for(Iteratoriterator=list.iterator();iterator.hasNext();){
Objectobject=(Object)iterator.next();
//判断是否是最后一个数
if(tempCount==list.size()-1){
//判断集合里面不足一百個數了
if(list.size() temp=null;
}else{
temp=object;
break;
}
}
//写入数据源
fs.write(object+"\r\n");
//记录数据的下标
tempCount++;
}
}catch(IOExceptione){
e.printStackTrace();
}
returntemp;
}