2013-10-01 107 views
-5

我正在嘗試在文本文件中寫入一個對象(事務)。 交易對象包含卡號,金額,日期。 我需要在文本文件中寫下如下的對象,並留下一些空白。在文本文件中寫入對象

Card no  Amount  Date 

    12335  900.00  29/09/2010 

我已經使用ObjectOutputStream在文件中寫入對象。但我無法彌補這種情況下的差距。

如何在交易對象中寫入一些空白的文件,以便它可以與頭部對齊?

任何幫助表示讚賞

+6

你試過的代碼在哪裏? – nhgrif

+0

你不能以這種方式對一個對象進行序列化,你需要將文本所代表的「文本」寫入一個文本文件,也許使用類似'String#format'的東西 – MadProgrammer

+0

反序列化會給你與你序列化的同一個對象。閱讀這篇文章http://stackoverflow.com/questions/11653374/whats-the-difference-between-serialization-and-simply-store-the-object-on-disk –

回答

0

爲什麼你關心ObjectOutputStream中的空白。它主要用於寫入文件和重新創建對象。如果你想用它把它寫入一個人們可讀格式的文件,建議你使用普通文件輸出流而不是對象輸出流。

+0

謝謝你的快速回復。在正常的文件輸出流中如何提供差距並將其寫入單個文件中? – Ramya

+0

@Ramya希望這個鏈接有助於http://www.tutorialspoint.com/java/java_filewriter_class.htm –

+0

使用filewriter我能夠寫出沒有空白的對象。如何指定在此位置寫入對象的位置。 – Ramya

0

我不知道你的交易對象是什麼樣子。但是這應該提供一些線索。注意System.out.printf()。您可以替換自己的輸出流。我扔在日曆對象,所以您可以得到它的意義上多餘的東西......

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); 
} 
0

也許我失去了一些東西,但你嘗試過使用標籤(一個字符串逃到「\ t 「)在你需要的位置上存在差距?

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

與您輸出值的println語句類似。