2011-11-07 57 views
5

嗨我有一堆数据我写入一个文本文件,行的每一行保存大约4个不同的数据片段,我想使它成为每个类型是数据在行中对齐。如何将写入文本文件的数据格式化为列?

以下是写入数据的行。

output.write(aName + " " + aObjRef + " " + aValue + " " + strDate + " " + note + (System.getProperty("line.separator"))); 

下面是数据看起来是如何写的。

CR_2900_IPGR_AL 2900.EV2 Alarm 111107  
CR_2900_IMPT_AL 2900.EV311 Alarm 111107  
CR_STH_CHL_AL 2900.EV315 Alarm 111107  
CR_OAT_AL 2900.EV318 Alarm 111107  
SLB_102_2270A Temp Event 60215.EV1 Fault 111107  
MACF_70300_IMPT_AL 70300.EV2 Alarm 111107 

这里是如何编号喜欢它看起来

CR_2900_IPGR_AL    2900.EV2  Alarm  111107  
CR_2900_IMPT_AL    2900.EV311  Alarm  111107  
CR_STH_CHL_AL    2900.EV315  Alarm  111107  
CR_OAT_AL     2900.EV318  Alarm  111107  
SLB_102_2270A Temp Event 60215.EV1  Fault  111107  
MACF_70300_IMPT_AL   70300.EV2  Alarm  111107 

回答

9

看一看的Formatter类或String.format(String format, Object... args)方法。

试试这个,例如:

String formatStr = "%-20s %-15s %-15s %-15s %-15s%n"; 
output.write(String.format(formatStr, aName, aObjRef, aValue, strDate, note)); 

(注意:%n将自动使用特定于平台的行分隔符。)

3

有多种选择,但最简单的方法是使用String.format()。见format string details for more info,但大致是:

String.format("%-20s %-10s ...etc...", aName, aObjRef, ...etc...); 
+0

注意,这将右对齐每列。 (另外,'%n'是'System.getProperty(“line.separator”)''的一个很好的选择。) – aioobe

+0

@aioobe固定...虽然我宁愿看到第二列对齐'',只是稍微多一些工作。 –

2

可以使用的String.format命令做这样的事情:

output.write("%20s %20s %20s %20s%s".format(
    aName, aObjRef, aValue, strDate, note, System.getProperty("line.separator") 
); 
+0

请注意,这将使每列对齐。 (另外,'%n'是System.getProperty(“line.separator”)的一个很好的选择。) – aioobe

相关问题