Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在文本文件中写入对象_Java_File Io - Fatal编程技术网

Java 在文本文件中写入对象

Java 在文本文件中写入对象,java,file-io,Java,File Io,我试图在文本文件中写入一个对象(事务)。 交易对象包含卡号、金额、日期。 我需要在文本文件中写入对象,如下所示,有一些间隙 Card no Amount Date 12335 900.00 29/09/2010 我使用ObjectOutputStream在文件中写入对象。但我无法给出这个案例中的差距 如何将事务对象写入有一些间隙的文件中,以便它可以与标头对齐 感谢您提供的任何帮助为什么您会担心ObjectOutputStream中的漏洞。它主要用

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

 Card no      Amount      Date

  12335       900.00     29/09/2010
我使用ObjectOutputStream在文件中写入对象。但我无法给出这个案例中的差距

如何将事务对象写入有一些间隙的文件中,以便它可以与标头对齐


感谢您提供的任何帮助

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

我不知道您的事务对象是什么样子。但这应该提供一些线索。注意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);
}

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

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

与输出值的println语句类似

您尝试的代码在哪里?您不能以这种方式序列化对象,您需要将由文本表示的“文本”写入文本文件,使用类似于
String#format
的东西,反序列化将为您提供与序列化相同的对象。阅读此帖,感谢您的快速回复。在正常的文件输出流中,如何提供间隙并在一次拉伸时将其写入文件?@Ramya希望此链接有助于使用filewriter,我能够在没有间隙的情况下写入对象。如何指定在此位置写入对象的位置。