【问题标题】:Writing Date time and name onto a File Using Java [duplicate]使用Java将日期时间和名称写入文件[重复]
【发布时间】:2016-10-02 10:03:39
【问题描述】:

我希望将姓名连同日期和时间一起写到一个文件中 使用一个arraylist。但是当我把它写到文件上时……一个单一的名字 with date 出现两次;它与我的暗示有关 StandardOpenOption.Append 因为当我不打印日期和值时 一次,但确实覆盖了我以前的值。][1]

//created method to write date and name onto file

public void standardRoom() 
{
    try {
        Path p=Paths.get("test/standardRoom.text");

        if(Files.notExists(p))
        {
            Files.createFile(p);
        }
        System.out.println("Enter Name");
        String name=sc.next();

        List<String>stdrooms=new ArrayList<>();

        date = d.toString();

        stdrooms.add(date); 
        stdrooms.add(name);

        System.out.println("Standard Room booked");

        Iterator<String>bookings=stdrooms.iterator();
        while(bookings.hasNext())
        {              
            String s=bookings.next();
            //Files.write(p, stdrooms);
            Files.write(p, stdrooms,StandardOpenOption.APPEND);
        }
    } catch (IOException e) {
    }          


}
}

【问题讨论】:

  • 请更正并对齐所有缩进。谢谢。
  • 糟糕!我的错误。更正

标签: java arraylist


【解决方案1】:

将date 和name 添加到列表后,stdrooms 包含两个元素。

迭代器bookings 现在具有列表的大小。因此Files.write被执行了两次:

    Files.write(p, stdrooms,StandardOpenOption.APPEND);

当打印包含date 和name 的stdrooms 时,会使用默认的toString 实现,这反过来会打印整个列表。

一种解决方案可能是使用s 代替stdrooms 进行打印:

    Files.write(p, s.getBytes(),StandardOpenOption.APPEND);

【讨论】:

  • 它显示错误。如果我使用“s”而不是标准房间,则参数不匹配;字符串无法转换为 byte[]
  • s.getBytes() 将返回一个字节数组。我会更正答案。
  • 完美!我想要的方式......那是一些微不足道的废话!
  • Thanx man 终于程序看起来整洁了
  • 很高兴我能帮上忙。如果愿意,您可以将其标记为已接受的答案或投票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 2019-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多