-2

以下のような内容のファイルを作成したい:

Start

NAME      COLLEGE        COUNTRY    MOBILE

xyz        college1      India      1234567890

abc        college2       Germany    4561237890

End

上記のファイルでは、列名が固定されているだけで、各行の値が変更されます。行数が定義されていません。次のsample.stで、JavaのString Templateを使用してこれを試しました

Start

NAME COLLEGE COUNTRY MOBILE

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

End

プレースホルダーの値が実際の値に置き換えられる場所。しかし、このアプローチで複数の行を持つことができるかどうかはわかりません。

4

3 に答える 3

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 に答える
0

各行にテンプレートを使用しないのはなぜですか? a を使用しStringBuilderてヘッダーを連結してから行を反復処理し、テンプレートを介して文字列を生成し、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

ええ、なぜですか?ファイルを読むときは、必ずヘッダーと開始と終了をスキップしてから、ファイルを 1 行ずつ読んでください。

また、「;」などの区切り文字を使用することも検討してください。sed/awk のようなもので読みたくない場合は、その方法で読む方がはるかに快適です。

于 2013-02-11T10:46:21.503 に答える