2011-11-07 28 views
5

Xin chào Tôi có một loạt dữ liệu Im ghi vào một tệp văn bản, mỗi dòng của hàng chứa khoảng 4 phần dữ liệu khác nhau, tôi muốn làm cho nó sao cho mỗi loại là dữ liệu được căn chỉnh theo hàng.Làm cách nào để định dạng dữ liệu được ghi vào tệp văn bản được thực hiện trong cột?

Đây là dòng ghi dữ liệu.

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

Đây là cách dữ liệu trông khi được viết ngay bây giờ.

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 

Và đây là cách Id như nó nhìn

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 

Trả lời

9

Hãy nhìn vào lớp Formatter, hoặc String.format(String format, Object... args) phương pháp.

Hãy thử điều này ví dụ:

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

(Lưu ý rằng %n sẽ tự động sử dụng dòng tách nền tảng cụ thể.)

3

Có một số tùy chọn, nhưng đơn giản nhất là sử dụng String.format(). Xem format string details for more info, nhưng đại khái là:

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

Lưu ý rằng điều này sẽ phải sắp xếp mỗi cột. (Ngoài ra, '% n' là một lựa chọn tốt cho' System.getProperty ("line.separator") '.) – aioobe

+0

@aioobe Đã sửa lỗi ... mặc dù tôi muốn thấy cột thứ hai được căn chỉnh trên' .', chỉ làm việc nhiều hơn một chút. –

2

Bạn có thể sử dụng lệnh String.format để làm một cái gì đó như:

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

Lưu ý rằng điều này sẽ căn chỉnh đúng từng cột. (Ngoài ra, '% n' là một lựa chọn tốt cho' System.getProperty ("line.separator") '.) – aioobe

Các vấn đề liên quan