-2

我想创建一个文件,其内容应如下所述:

Start

NAME      COLLEGE        COUNTRY    MOBILE

xyz        college1      India      1234567890

abc        college2       Germany    4561237890

End

在上面的文件中,列名是固定的,只有每一行的值会改变。未定义行数。我在java中使用String Template尝试了这个,下面的sample.st

Start

NAME COLLEGE COUNTRY MOBILE

$name$ $college$ $country$ $mobile$

End

占位符值将被实际 vales 替换。但我不确定这种方法可以有多行。

4

3 回答 3

0

为什么不只为每一行使用模板?使用 aStringBuilder连接标题,然后遍历行,通过模板生成字符串并附加到StringBuilder.

例如在伪代码中:

StringBuilder sb = new StringBuilder();
sb.append("START\n");
sb.append(....)
foreach(Row r : rows) {
   sb.append(template);
}
sb.append("END\n");

如果做不到这一点,请查看VelocityFreemarker等模板库。

于 2013-02-11T10:43:34.753 回答
0

是啊,为什么不呢?就在您阅读文件时,请确保您跳过标题和开始&结束,然后逐行阅读文件。

还可以考虑使用一些分隔符,例如“;” 除非您想通过 sed/awk 之类的方式来阅读它——阅读时这样会更舒服。

于 2013-02-11T10:46:21.503 回答
0

用途FormatterScanner类别:

文件创建

Formatter f=new Formatter("data.txt");
    f.format("%s%n","START");
    f.format("%s\t\t%s\t\t%s\t\t%s%n","NAME","COLLEGE","COUNTRY","MOBILE");
    for(int i=0;i<10;i++)
    {
     f.format("%d\t\t%d\t\t%d\t\t%d%n",i,i,i,i);  // Apply your logic for input over here
    }
    f.format("%s%n","END");
    f.close();

文件读取

    Scanner s=new Scanner(new File("data.txt"));
    while(s.hasNext())
    {
        System.out.println(s.nextLine());   
    }
    s.close();
    }
于 2013-02-11T10:53:35.447 回答