以特定格式存储txt文件中的数据

时间:2009-04-11 14:11:41

标签: java file file-format text-files

我的问题与我之前的问题(How to display data from txt file in specific format)有关。

我想知道是否可以在第一时间以特定格式存储txt文件中的数据而不是先将其存储然后再次检索并以特定格式显示?

e.g。而不是像这样存储txt文件上的数据

Jessica 
Walking
20 minutes
Matthew
Run 
10 minutes

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

Jessica   Walking    20 minutes
Matthew   Run        10 minutes 

4 个答案:

答案 0 :(得分:3)

关于你对阿德尔答案的评论:

  

感谢adeel825,但是我不知道在哪里放“\ t”..到目前为止我使用这个方法:new PrintStream(fout).println(name); new PrintStream(fout).println(exercise);新的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或更多字符宽,则结果将不正确。如果您无法提前知道,则必须遍历每列中的值以确定列的宽度。

答案 1 :(得分:1)

以这种方式存储数据没有问题。您需要做的就是写出值并用制表符“\ t”

分隔它们

答案 2 :(得分:0)

您需要对您的格式进行“手动编码”。最好的方法是将文件访问代码包装在某处,并创建类似:

的内容
OpenFile()
CreateEntry(name, type, time)

答案 3 :(得分:0)

如果要编写固定长度的记录,可以使用String。[format] [1] method

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

这将创建一个每个字段中包含20个字符的表。您可以阅读语法here

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