Как я могу отформатировать данные, записанные в текстовый файл, чтобы сделать в столбцах? - PullRequest
6 голосов
/ 08 ноября 2011

Привет, у меня есть куча данных, которые я записываю в текстовый файл, каждая строка строк содержит около 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 

Ответы [ 3 ]

9 голосов
/ 08 ноября 2011

Взгляните на класс 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 голосов
/ 08 ноября 2011

Существует несколько вариантов, но проще всего использовать String.format(). Подробнее см. формат строки , но примерно:

String.format("%-20s %-10s ...etc...", aName, aObjRef, ...etc...);
2 голосов
/ 08 ноября 2011

Вы можете использовать команду String.format, чтобы сделать что-то вроде:

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