7

Hi I have a bunch of data Im writing to a text file, each line of the rows holds about 4 different pieces of data, I want to make it so that each type is data is aligned in rows.

Here is the line that writes the data.

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

Here is how the data looks when written right now.

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 

And here is how Id like it to look

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 
aioobe
  • 413,195
  • 112
  • 811
  • 826
Beef
  • 1,413
  • 6
  • 21
  • 36

3 Answers3

11

Have a look at the Formatter class, or the String.format(String format, Object... args) method.

Try this for instance:

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

(Note that %n will automatically use the platform-specific line separator.)

aioobe
  • 413,195
  • 112
  • 811
  • 826
3

There are a number of options, but the easiest is to use String.format(). See format string details for more info, but roughly:

String.format("%-20s %-10s ...etc...", aName, aObjRef, ...etc...);
Dave Newton
  • 158,873
  • 26
  • 254
  • 302
  • Note that this will right-align each column. (Also, `%n` is a good alternative to `System.getProperty("line.separator")`.) – aioobe Nov 07 '11 at 22:40
  • @aioobe Fixed... although I'd rather see that second column aligned on the `.`, which is only slightly more work. – Dave Newton Nov 07 '11 at 22:48
2

You can use the String.format command to do something like:

output.write("%20s %20s %20s %20s%s".format(
  aName, aObjRef, aValue, strDate, note, System.getProperty("line.separator")
);
Eamonn O'Brien-Strain
  • 3,352
  • 1
  • 23
  • 33
  • Note that this will right-align each column. (Also, `%n` is a good alternative to `System.getProperty("line.separator")`.) – aioobe Nov 07 '11 at 22:40