首页 > 代码库 > 为数据挖掘小组写的一个用于造数据的小程序

为数据挖掘小组写的一个用于造数据的小程序

最近有个数据挖掘的项目,要求在文本里面写入随机字母并且要1000W个

于是就写了个程序用来造数据并记录一下

程序写的时候遇到的问题

1 未考虑内存溢出的情况,大批量的把数据写入导致内存溢出

以后需要谨慎对待

 

目前完整版

package test;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.junit.Test;

public class test {
    /**
     * 获取随机26个字母
     * @param bit 几位字母 
     * @return String
     */
    public String RandomWord(int bit) {
        String res = "";
        for (int i = 0; i < bit; i++) {
            res += (char) (a + (int) (Math.random() * 26));
        }
        return res;
    }
    /**
     * 
     * @param bit 几位字母
     * @param row 一行几个
     * @param totalNums 总共多少字母(最好与ROW取整)
     * @param url 输出到的文件位置
     * @param spilt 字母之间的分隔符
     * @return
     * @throws IOException
     */
    public  String addWordToFile(int bit, int row, int totalNums, String url,String spilt) throws IOException{
        File file = new File(url);
        StringBuffer str = new StringBuffer();
        for (int i = 1; i <= totalNums; i++) {
            int j=(int) (Math.random() * 26);
            if(i%row==1)
                str.append(j+spilt);
            if (i % row == 0){
                str.append(RandomWord(bit) + "\r\n");
            }
            else
                str.append(RandomWord(bit) + spilt);
        }
        FileWriter writer = new FileWriter(url, true);  
        writer.write(str.toString());
        writer.close();
        return str.toString();
    }

    @Test
    public void test1() throws IOException {
        addWordToFile(3, 10, 1000, "C:\\Users\\sunfan\\Desktop\\10Y.txt","\t");    
    }
}