多线程 - 用Java实现将500万条行记录分别均匀拆分到多个磁盘上
大家讲道理
大家讲道理 2017-04-17 15:27:22
[Java讨论组]

有500万条记录放在C盘上,现在需要将这500万条记录平均拆分到n个磁盘上,如何实现才能效率最优?

例如:n=2的时候,有两个盘disk1,disk2,分别是D://和E://,这时候奇数行的记录都在D盘,偶数行的记录都在E盘;

当n==5的时候,编号为5k+1的行放在disk1,5k+2的行号的行放在disk2上。。。以此类推。

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
高洛峰

参考这个
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.text.DecimalFormat;
import java.util.Random;

public class Test {

public static void main(String[] args) throws Exception {

File src = new File("D:\\src.txt");
File dest = new File("D:\\dest");
FileReader fr = new FileReader(src);
BufferedReader br = new BufferedReader(fr);
int lineno = 1;
int index = 1;
dest.mkdirs();
FileWriter fw = new FileWriter(new File(dest, creIndex(index++)

  • ".txt"));

  1. (br.ready()) {

  2. (lineno++ % 500 == 0) {
    fw.close();

  3. = new FileWriter(new File(dest, creIndex(index++) + ".txt"));
    }
    String line = br.readLine();
    fw.write(line + "\r\n");
    }
    fw.close();
    br.close();
    fr.close();
    }

public static String creIndex(int num) {
DecimalFormat df = new DecimalFormat("00");
return df.format(num);
}

}

大家讲道理

记得用多线程

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号