最近有个数据挖掘的项目,要求在文本里面写入随机字母并且要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");
}
}
为数据挖掘小组写的一个用于造数据的小程序