【发布时间】:2013-06-03 20:56:02
【问题描述】:
我使用一种方法来使用 XMLOutputter、FileWriter 和 BufferedWriter 创建 xml 文件。它工作正常,但 xml 文件可能会更大(超过 10 兆),我使用其中的很多文件。
我正在尝试找到一种将文件直接写入 zip 文件的方法,同时保留文件架构。我使用的方法是将不同的xml文件一个接一个地添加到一个主文件夹中。
我想改变我的方法,这样它就不会删除已归档的文件,只需将它们添加到其中。
我一直在研究如何做到这一点,我知道我需要从现有存档中获取文件,将新文件附加到其中,然后再次压缩。我想使用 zipInputStream 和 zipOutputStream 来做到这一点。
这个问题的公认答案Java appending files into a zip 是我想做的最好的例子,但我第一次使用该方法时,zip 文件不存在,我不会添加多个文件存档的时间。我想我可以使用 if 语句自行解决此问题,该语句将检查 zip 文件是否存在,并在方法参数中使用 file 而不是 file[]。
我面临的主要问题是找到一种方法来创建 xml 文件而不将其写入磁盘并将其压缩到 zip 文件中。
我的猜测是创建一个临时文件并在压缩完成后将其删除。
知道如何实现这一目标吗?
这是我的代码示例:
XMLOutputter objOut = new XMLOutputter();
objOut.setFormat(Format.getPrettyFormat());
File objBaseDirectory = new File(m_strFolder); // folder where the xml file will be written but not main xml folder
if(!objBaseDirectory.exists())
{objBaseDirectory.mkdirs();}
FileWriter objFileWriter = new FileWriter(m_strFile); // xml file name
BufferedWriter objBuffer = new BufferedWriter(objFileWriter);
objOut.output(m_objectToWrite.toXml(0), objBuffer); // source file to convert to xml
这工作正常,并将 xml 文件写入正确的文件夹。
谁能帮我解决这个问题?
【问题讨论】:
标签: java xml filewriter zipoutputstream