【问题标题】:Serialize an object to XML and append for 1 day将对象序列化为 XML 并附加 1 天
【发布时间】:2012-05-18 15:43:57
【问题描述】:

所以,我又提出了一个问题“Save object data to a file”,我意识到我不够具体。

我正在编写的程序可以很好地保存文件的历史数据,所以我的目标是这样的:

if timePolled > midnight
   if fileExists(fileName)
       appendData()
   else
       createFile(data_dd_mm_yy) // in xml
endif

看我都是VB以上... ick

无论如何,对象本身看起来像这样:

public class IHandler{
    public double currentLoad;
    public String currentPrice;
    public String configArgs[];
}

我不太确定我会怎么做。

【问题讨论】:

  • 你为什么不使用一些日志框架?
  • 我愿意接受建议,但我不认为任何“重”的东西真的是必要的。我只需要每 5 分钟左右将一些变量(最多大约 6 个左右)序列化到一个文件中。
  • 您的算法对我来说听起来不错,尽管您需要进行一些调整以说明每个时间戳都在“午夜”之后的事实,具体取决于您所指的日期。您在实施时遇到了什么问题?很难说出这里的实际问题是什么。

标签: java xml parsing serialization sax


【解决方案1】:

如果我理解正确,您想知道如何安排重复任务。这是如何做到的。首先,您需要一个可运行的类,其中包含要在 run() 函数中执行的逻辑(即 VB 代码中顶层 if 语句中的内容)。假设有一个名为“task”的类的实例。然后您需要执行以下操作:

ScheduledExecutorService exService = Executors.newScheduledThreadPool(CORE_POOL_SIZE);
exService.scheduleAtFixedRate(task, numberOfSecondsTilMidnight, 
                                        twentyFourHoursInSeconds, TimeUnit.SECONDS);

其中 numberOfSecondsTilMidnight 是根据当前系统时间计算得出的,而 twoFourHoursInSeconds 仅为 24*60*60(这是运行它的频率。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    对于序列化,Xstream (http://x-stream.github.io/) 可以解决问题。然后剩下的你可以用简单的 Java 文件 IO 来处理。

    【讨论】:

      猜你喜欢
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2011-05-06
      • 1970-01-01
      相关资源
      最近更新 更多