有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在文本文件中写入对象

我试图在文本文件中写入一个对象(事务)。 交易对象包含卡号、金额、日期。 我需要在文本文件中写入对象,如下所示,有一些空白

 Card no      Amount      Date

  12335       900.00     29/09/2010

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

如何将事务对象写入一个有间隙的文件中,使其与头文件对齐

任何帮助都将不胜感激


共 (3) 个答案

  1. # 1 楼答案

    我不知道你的交易对象是什么样子。但这应该提供一些线索。注意系统。出来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. # 2 楼答案

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

  3. # 3 楼答案

    也许我遗漏了什么,但是您是否尝试过在需要间隙的位置使用制表符(以字符串形式转义为“\t”)

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

    与输出值的println语句类似