我正在尝试在文本文件中编写一个对象(事务)。Transaction 对象包含卡号、金额、日期。我需要在文本文件中写入对象,如下所示,有一些空白。
Card no Amount Date
12335 900.00 29/09/2010
我已经使用 ObjectOutputStream 将对象写入文件中。但在这种情况下,我无法给出差距。
如何将事务对象写入一个有一些间隙的文件中,以便它可以与标题对齐?
任何帮助表示赞赏
我不知道您的 Transaction 对象是什么样的。但这应该提供一些线索。注意 System.out.printf()。您可以替换自己的输出流。我在 Calendar 对象上添加了额外的东西,只是为了让您了解它......
private class Transaction {
public int cardno;
public BigDecimal amt;
public Date someDate;
}
public void zz2() {
Transaction t = new Transaction();
t.cardno = 12335;
t.amt = new BigDecimal("900.00");
Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT"));
cal.set( Calendar.YEAR, 2013 );
cal.set( Calendar.MONTH, 9); // zero offset so 9 = Oct
cal.set( Calendar.DATE, 1 ); // NOT zero offset...
cal.set( Calendar.HOUR_OF_DAY, (15) ); // 3PM
cal.set( Calendar.MINUTE, 30 );
cal.set( Calendar.SECOND, 44 );
cal.set( Calendar.MILLISECOND, 700 );
t.someDate = cal.getTime();
DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
String s = df.format(t.someDate);
System.out.println("Card no Amount Date");
System.out.printf ("%6d %12s %10s\n",
t.cardno,
t.amt,
s);
}
您为什么担心 ObjectOutputStream 中的空白。它主要用于写入文件和重新创建对象。如果您想使用它以人类可读格式将其写入文件,建议您使用普通文件输出流而不是对象输出流。
也许我遗漏了一些东西,但是您是否尝试过在需要间隙的位置使用制表符(在字符串中转义到“\ t”)?
System.out.println("Card no\tAmount\tDate");
类似地,对于您输出值的 println 语句。