删除先前的XML文件,直到使用Java生成新文件



我使用来自数据库的数据在指定位置使用printwwriter写入xml文件。我不想删除现有的xml文件,直到xml的生成在当前运行中完全完成,因为在生成xml的任何问题的情况下,我将留下没有xml文件。在这种情况下,当前文件的删除将被推迟,直到当前运行中的文件生成/写入完全完成,我将非常感谢有关处理这种情况的任何建议。

您可以将新的XML写入临时文件,然后移动/重命名旧文件,然后移动/重命名临时文件为实际文件名,最后删除旧文件。这样你就可以一直保留一个合适的文件,并且在新文件到位之前不会删除旧文件。

最常用的方法是用不同的文件名重命名原始XML文件。

简单的版本:

If 'file.xml' exists Then
    If 'file.xml.bak' exists Then 
        remove 'file.xml.bak'
    Fi
    rename 'file.xml' as 'file.xml.bak'
Fi
generate XML to 'file.xml'

此版本的缺陷是,如果应用程序(或系统)在重命名后失败,则下次运行该应用程序时可能会看到不完整或缺失的'file.xml'。您可以通过让应用程序在检测到任何一种情况时尝试使用备份文件来解决这个问题。

或者,您可以引入第三个文件;例如,让应用程序生成'file.xml.new',并在写入成功后进行重命名。在某些情况下,您仍然必须处理丢失的'file.xml':这是不可避免的,除非您有事务性文件系统。但是,出现故障的可能性较小,您应该始终完成当前文件和备份文件的副本。

相关内容

  • 没有找到相关文章

最新更新