生成百万条银行卡号

前段时间一个测试朋友让帮忙写个生成百万条不重复数据的程序,做测试工作使用,于是吃完饭就开始写了会,今天有空过来看了看博客,发现没什么东西所以就将这段代码传上来,仅仅为了记住这一过程:


刚开始想了想生成百万条无非就是写个100万次循环计数的方法,后来在使用过程中发现在70万左右的时候便发生了内存溢出问题。于是进行了代码拆分,50万写一次。 代码如下

import static java.lang.System.out; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.util.Arrays; /** * 原理:因文件内存太大容易内存溢出,故分成2个文件各写入五十万条,然后进行合并 * @author thinkpad * */ public class Test { public static final int BUFSIZE = 1024 * 8; //输出文件路径1 public static String OUT_FILE_1="D://bank1.csv"; //输出文件路径2 public static String OUT_FILE_2="D://bank2.csv"; //合并文件路径 public static String OUT_PUT_FILE="D:/output.csv"; //逗号分隔 public static String COMMA_SPLIT=","; //换行分隔 public static String LINE_SPLIT="\n"; /** * 写文件 * 由于一次性写入内存会出现溢出,故放2个文件然后再进行合并 */ public static long produce(String outFileName,long b_no){ File outfile=new File(outFileName); long b_max_no=b_no+500000; try { BufferedWriter bw = new BufferedWriter(new FileWriter(outfile)); StringBuffer sb_t=new StringBuffer(); while(b_no

    推荐阅读