Groovy:具有随机行数的文件生成器

问题描述 投票:0回答:2

我需要编写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

我是新手,如果有任何建议,我将非常高兴!

file random groovy generator
2个回答
0
投票

您已经做了一些聪明的事情:您已将问题分解成碎片。分解是解决问题的方式。

看看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());
        }
    }
}

0
投票

这是一种可能的更时髦的方法。请注意,由于执行速度非常快,因此每一行的时间很可能是相同的。

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)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.