我需要编写Groovy
脚本来生成.txt
文件。每个文件必须包含以下行:
12:43:10 12345678 -49376952
// time, variable1, variable2
首先,如何定义随机数的行?
其次,如何根据行数覆盖每行的变量?我的意思是说它将包含3行,它必须看起来像
time, variable1.1, variable2.1
time, variable1.2, variable2.2
time, variable1.3, variable2.3
我是新手,如果有任何建议,我将非常高兴!
您已经做了一些聪明的事情:您已将问题分解成碎片。分解是解决问题的方式。
看看Java的Random类。
您需要多个随机数:您需要一个介于1到某个最大值之间的数字。该文本文件可以有多大?一百万行可以吗?
时间可以是写行时的时间戳。它必须有多独特?您应该包括小时,分钟,秒,毫秒,纳秒吗?
变量也是随机的吗?我不知道您所说的覆盖是什么意思。
这将在Java中完成。也许它将指导您选择Groovy。我将输出写入控制台;我将继续为您练习如何写文件:
import java.util.Random;
/**
* Demo of how to do it in Java
* User: mduffy
* Date: 10/14/2015
* Time: 7:38 AM
* @link http://stackoverflow.com/questions/33123709/groovy-generator-of-file-with-random-nuber-of-lines/33123830?noredirect=1#comment54060700_33123830
*/
public class RandomDemo {
public static void main(String[] args) {
int maxLines = new Random().nextInt(15);
int numVariables = 2;
for (int i = 0; i < maxLines; ++i) {
StringBuilder builder = new StringBuilder(1024);
long currentNanos = System.nanoTime();
builder.append(currentNanos).append('\t');
for (int j = 0; j < numVariables; ++j) {
builder.append("variable-").append(i+1).append('.').append(j+1).append('\t');
}
System.out.println(builder.toString());
}
}
}
这是一种可能的更时髦的方法。请注意,由于执行速度非常快,因此每一行的时间很可能是相同的。
int maxLines = new Random().nextInt(20)
def now
new File("myFile.txt").withWriter { out ->
(1..maxLines).eachWithIndex{n, i ->
now = new Date()
out.println now.format("HH:mm:ss")+' variable1.'+(i+1)+' variable2.'+(i+1)
}
}