2

私の質問は、以前の質問 ( txt ファイルのデータを特定の形式で表示する方法) に関連しています。

最初にデータを保存してから再度取得して特定の形式で表示するのではなく、txtファイルにデータを特定の形式で保存することが可能かどうか疑問に思っていましたか?

たとえば、このようにtxtファイルにデータを保存する代わりに

ジェシカ
ウォーキング
20分
マシュー
走る
10分

この形式でtxtファイルに保存したかった

ジェシカ ウォーキング 20分
マシュー・ラン 10分
4

4 に答える 4

3

adeelの答えに対するあなたのコメントについて:

adeel825 に感謝しますが、「\t」をどこに置くべきかわかりません..これまでのところ、次のメソッドを使用しています: new PrintStream(fout).println (name); new PrintStream(fout).println (演習); new PrintStream(fout).println("10 分");

まず、new PrintStream(fout)何かを印刷するたびに " " を呼び出さないでください。これを行う:

PrintStream ps = new PrintStream(fout);
ps.print(name);
ps.print('\t');
ps.print(exercise);
ps.print('\t');
ps.print(time);
ps.println();

または単に:

PrintStream ps = new PrintStream(fout);
ps.println(name + '\t' + exercise + '\t' + time);

編集

あなたのコメントに応えて:

もう1つの質問...名前の一部が長すぎて、さらにタブが必要です..私はps.print('\t','\t');を置きました。しかし、それは動作していないようです..

これが問題である場合は、表示したい方法で保存しようとしているように思えます。プログラムで簡単に解析できる方法でそれらを保存しようとしていると思いました。列に表示して保存したい場合は、タブではなくスペースでパディングすることをお勧めします。

すべての列の幅が 30 文字未満になることがわかっている場合は、printf を使用して次のようにすることができます。

ps.printf("%30s%30s%30s%n", name, exercise, time);

慣れていない場合、その構文はかなりビザンチンに見える可能性があります..基本的に、各「%30s」は、少なくとも 30 文字幅になるように文字列引数を埋め込むことを意味します。いずれかの値の幅が 30 文字以上の場合、結果は正しく表示されません。事前にわからない場合は、各列の値をループして、必要な列の幅を決定する必要があります。

于 2009-04-11T14:37:02.947 に答える
1

この方法でデータを保存しても問題ありません。値を書き出して、タブ文字「\t」で区切るだけです。

于 2009-04-11T14:16:16.633 に答える
0

固定長のレコードを書き込みたい場合は、String。[format][1]メソッドを使用できます。

ps.println(String.format("%20s%20s%20s",name,exercise,time))

これにより、各フィールドに20文字のテーブルが作成されます。ここで構文を読むことができます

[1]: http: //java.sun.com/javase/6/docs/api/java/lang/String.html#format(java.lang.String、java.lang.Object ...)

于 2009-04-11T16:11:00.990 に答える
0

フォーマットを「ハンドコード」する必要があります。これを行う最善の方法は、ファイルにアクセスするコードをどこかにラップして、次のようなものを作成することです。

OpenFile()
CreateEntry(name, type, time)
于 2009-04-11T14:18:19.467 に答える