2

我的问题与我之前的问题(如何以特定格式显示 txt 文件中的数据)有关。

我想知道是否有可能首先以特定格式将数据存储在 txt 文件中,而不是先存储它然后再次检索它并以特定格式显示它?

例如,而不是像这样将数据存储在 txt 文件中

杰西卡
步行
20分钟
马修
跑
10分钟

我想以这种格式将它存储在txt文件中

杰西卡步行 20 分钟
马修跑 10 分钟
4

4 回答 4

3

关于您对阿德尔回答的评论:

谢谢adeel825,但是我不知道把“\t”放在哪里。到目前为止,我使用这个方法:new PrintStream(fout).println(name); 新的 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);

编辑

回应您的评论:

还有一个问题……有些名字太长了,需要更多标签……我放了 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

您需要“手动编码”您的格式。最好的方法是将你的文件访问代码包装在某个地方,并创建如下内容:

OpenFile()
CreateEntry(name, type, time)
于 2009-04-11T14:18:19.467 回答
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 回答