有500万条记录放在C盘上,现在需要将这500万条记录平均拆分到n个磁盘上,如何实现才能效率最优?
例如:n=2的时候,有两个盘disk1,disk2,分别是D://和E://,这时候奇数行的记录都在D盘,偶数行的记录都在E盘;
当n==5的时候,编号为5k+1的行放在disk1,5k+2的行号的行放在disk2上。。。以此类推。
参考以下代码:
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);
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。