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