2011-11-07 5 views
5

Hola tengo un montón de datos Estoy escribiendo en un archivo de texto, cada línea de las filas contiene aproximadamente 4 datos diferentes, quiero hacerlo de modo que cada tipo de datos se alineen en filas.¿Cómo puedo formatear los datos escritos en un archivo de texto para que se hagan en columnas?

Aquí está la línea que escribe los datos.

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

Así es como se ven los datos cuando se escriben en este 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 

Y aquí es como identificación, al igual que se vea

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 

Respuesta

9

Tener un vistazo a la clase Formatter, o el método String.format(String format, Object... args).

probar este por ejemplo:

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

(Tenga en cuenta que %n utilizará automáticamente el separador de línea específica de la plataforma.)

3

Hay una serie de opciones, pero la más sencilla es utilizar String.format(). Ver format string details for more info, pero más o menos:

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

Tenga en cuenta que esto haga alinear cada columna. (Además, '% n' es una buena alternativa a' System.getProperty ("line.separator") '.) – aioobe

+0

@aioobe Solucionado ... aunque prefiero ver esa segunda columna alineada en el' .', que es solo un poco más de trabajo. –

2

Usted puede utilizar el comando String.Format a hacer algo como:

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

Tenga en cuenta que esto alineará a la derecha cada columna. (Además, '% n' es una buena alternativa a' System.getProperty ("line.separator") '.) – aioobe

Cuestiones relacionadas