2013-10-01 2 views
-5

Я пытаюсь написать объект (Транзакция) в текстовом файле. Объект Транзакция содержит номер карты, сумму, дату. Мне нужно написать объект в текстовом файле, как показано ниже, с некоторыми пробелами.Запись объекта в текстовый файл

Card no  Amount  Date 

    12335  900.00  29/09/2010 

Я использовал ObjectOutputStream для записи объекта в файл. Но я не мог упустить пробелы в этом случае.

Как написать объект транзакции в файле с некоторыми пробелами, чтобы его можно было выровнять с заголовком?

Любая помощь приветствуется

+6

Где код, по которому вы пытались? – nhgrif

+0

Вы не можете сериализовать объект таким образом, вам нужно написать текст, представленный текстом, в текстовый файл, используя, может быть, что-то вроде 'String # format' – MadProgrammer

+0

Deserialization предоставит вам тот же объект, который вы сериализовали. Прочтите этот пост 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

Используя файловый менеджер, я смог написать объект без пробелов. Как указать позицию для записи объекта в этой позиции. – Ramya

0

Я понятия не имею, как выглядит ваш объект транзакции. Но это должно дать некоторые подсказки. Обратите внимание на 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); 
} 
0

Может быть, я что-то не хватает, но вы пробовали с помощью вкладок (сбежавших в строке в «\ т «) в положениях, в которых вам нужны пробелы?

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

Сходство для инструкции println, в которой вы выводите значения.

Смежные вопросы