用例
问题
使用下面的实现,我收到来自WinZip和googleearth的错误,即存档已损坏或文件无法分别打开。与我构建此模型的其他示例不同的部分是添加字符串的行:
ZipEntry kmlZipEntry = new ZipEntry("doc.kml");
out.putNextEntry(kmlZipEntry);
out.write(kml.getBytes("UTF-8"));
请给我指出正确的方向,以便正确地写这个字符串,使它处于正确的位置
doc.xml
在生成的kmz文件中。我知道如何将字符串写入临时文件,但为了便于理解和提高效率,我非常希望将该操作保留在内存中。
private static final int BUFFER = 2048;
private static void kmz(OutputStream os, String kml)
{
try{
BufferedInputStream origin = null;
ZipOutputStream out = new ZipOutputStream(os);
out.setMethod(ZipOutputStream.DEFLATED);
byte data[] = new byte[BUFFER];
File f = new File("./icons"); //folder containing icons and such
String files[] = f.list();
if(files != null)
{
for (String file: files) {
LOGGER.info("Adding to KMZ: "+ file);
FileInputStream fi = new FileInputStream(file);
origin = new BufferedInputStream(fi, BUFFER);
ZipEntry entry = new ZipEntry(file);
out.putNextEntry(entry);
int count;
while((count = origin.read(data, 0, BUFFER)) != -1) {
out.write(data, 0, count);
}
origin.close();
}
}
ZipEntry kmlZipEntry = new ZipEntry("doc.kml");
out.putNextEntry(kmlZipEntry);
out.write(kml.getBytes("UTF-8"));
}
catch(Exception e)
{
LOGGER.error("Problem creating kmz file", e);
}
}
给我演示如何放置
icons
将文件夹放入存档中类似的文件夹中,而不是与
doc.kml
.
更新
即使将字符串保存到临时文件中,也会出现错误。啊。
用例注释
how-to-access-local-files-on-server-in-jboss-application