怎么用Java实现将500万条行记录分别均匀拆分到多个磁盘上-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

怎么用Java实现将500万条行记录分别均匀拆分到多个磁盘上

有500万条记录放在C盘上,现在需要将这500万条记录平均拆分到n个磁盘上,如何实现才能效率最优?
例如:n=2的时候,有两个盘disk1,disk2,分别是D://和E://,这时候奇数行的记录都在D盘,偶数行的记录都在E盘;
当n==5的时候,编号为5k+1的行放在disk1,5k+2的行号的行放在disk2上。。。以此类推。

展开
收起
蛮大人123 2016-03-05 16:45:04 1848 0
1 条回答
写回答
取消 提交回答
  • 蛮大人123
    我说我不帅他们就打我,还说我虚伪

    参考以下代码:

    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"));
    (br.ready()) {
    (lineno++ % 500 == 0) {
    fw.close();
    = 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);
    }
    }
    2019-07-17 18:53:47
    赞同 展开评论 打赏
问答分类:
相关产品:
问答排行榜
最热
最新
相关电子书
更多
JAVA 应用排查全景图
立即下载
Java工程师必读手册
立即下载
Java应用提速(速度与激情)
立即下载