gpt4 book ai didi

java - 从以字节数组形式获取的 docx 文件创建 ZipFileSystem,而不写入文件

转载 作者:太空宇宙 更新时间:2023-11-04 12:36:34 27 4
gpt4 key购买 nike

我想通过使用java nio ZipFileSystem更改word/document.xml来修改以字节数组形式获取的docx文档。我有以下代码(基于 SO 讨论 How to edit MS Word documents using Java? ):

public static void modifyDocxContent(byte[] docx, byte[] newContent)  {
try {
// Create a Word File from byte[]
File docxFile = new File("C:\\test\\simple.docx");
Path docxPath = docxFile.toPath();
Files.write(docxPath, docx);

// Create jar URI for the same Word file
URI docxUri = URI.create("jar:file:/C:/test/simple.docx");

// Create a zip FileSystem for word file and modify content in it
Map<String, String> zipProperties = new HashMap<>();
zipProperties.put("encoding", "UTF-8");
zipProperties.put("create", "false");

try (FileSystem zipFS = FileSystems.newFileSystem(docxUri, zipProperties)) {
Path documentXmlPath = zipFS.getPath("word", "document.xml");
Files.delete(documentXmlPath);
Files.write(documentXmlPath, newContent, StandardOpenOption.CREATE, StandardOpenOption.APPEND, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.SYNC);
}
} catch (IOException e) {
e.printStackTrace();
}
}

我想避免创建文件并写入磁盘,这是获取 newFileSystem 调用中使用的 URI 所必需的。您是否可以想到更有效的方法来获取这样的 nio ZipFileSystem?

最佳答案

解决方案:
使用内存文件系统,例如 Google jimfsmarshall 。代码片段类似于 SO question 中的代码片段

关于java - 从以字节数组形式获取的 docx 文件创建 ZipFileSystem,而不写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37278183/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com