2011-11-07 13 views
5

Ciao Ho un sacco di dati Im scrivendo su un file di testo, ogni riga delle righe contiene circa 4 diversi pezzi di dati, voglio far sì che ogni tipo di dati sia allineato in righe.Come posso formattare i dati scritti su un file di testo da fare in colonne?

Ecco la riga che scrive i dati.

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

Ecco come appaiono i dati quando vengono scritti in questo momento.

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 

Ed ecco come Id come per guardare

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 

risposta

9

Dai un'occhiata alla classe Formatter, o il metodo String.format(String format, Object... args).

Prova questo per esempio:

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

(Si noti che %n utilizzerà automaticamente il separatore di linea specifica per la piattaforma.)

3

Ci sono una serie di opzioni, ma il più semplice è quello di utilizzare String.format(). Vedere format string details for more info, ma grosso modo:

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

Nota che questo diritto-align ogni colonna. (Inoltre, '% n' è una buona alternativa a' System.getProperty ("line.separator") '.) – aioobe

+0

@aioobe Corretto ... anche se preferirei vedere quella seconda colonna allineata su' .', che è solo un po 'più di lavoro. –

2

È possibile utilizzare il comando String.Format fare qualcosa di simile:

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

Si noti che questo allineare a destra ogni colonna. (Inoltre, '% n' è una buona alternativa a' System.getProperty ("line.separator") '.) – aioobe

Problemi correlati