在文本文件中编写对象

时间:2013-10-01 03:49:42

标签: java file-io

我正在尝试在文本文件中编写一个对象(Transaction)。 Transaction对象包含卡号,金额,日期。 我需要在文本文件中编写对象,如下所示。

 Card no      Amount      Date

  12335       900.00     29/09/2010

我使用ObjectOutputStream在文件中写入对象。但是我无法在这种情况下给出差距。

如何在具有一些间隙的文件中编写事务对象,以便它可以与标题对齐?

感谢任何帮助

3 个答案:

答案 0 :(得分:0)

您为什么关注ObjectOutputStream中的差距?它主要用于写入文件和重新创建对象。如果要使用它以人类可读格式将其写入文件,建议您使用普通文件输出流而不是对象输出流。

答案 1 :(得分:0)

我不知道您的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);
}

答案 2 :(得分:0)

也许我错过了一些东西,但是你是否尝试过使用标签(在字符串中转义为“\ t”)在你需要的位置?

System.out.println("Card no\tAmount\tDate");

类似于输出值的println语句。