gpt4 book ai didi

java - POI 读取文件而不更新文件时间戳

转载 作者:行者123 更新时间:2023-11-30 10:39:36 25 4
gpt4 key购买 nike

似乎可以使用以下命令打开 Excel 文件

Workbook wb = WorkbookFactory.create(myFile);

...但是,即使没有进行任何更改,调用

wb.close();

...释放资源将导致文件系统上的文件被更新(至少时间戳是,如果没有别的)。我发现解决这个问题的唯一方法是指定应将工作簿创建为“只读”

Workbook wb = WorkbookFactory.create(myFile, true);

我想做的是:

  • 我想从文件中打开现有的工作簿;
  • 立即释放任何文件系统资源,但将工作簿保留在内存中; (这不应该更新原始文件的时间戳);
  • 更改内存中的工作簿;
  • 将修改后的工作簿保存到新文件。

这可能吗?我已经尝试了很多东西,但似乎无法让它发挥作用。如果我不想更新原始文件时间戳,似乎我必须以只读方式打开工作簿。但是后来我无法在内存中修改它以便随后写入新文件。第 22 条军规。

[顺便说一句,我是从文件而不是流创建工作簿,据我所知,它效率更高。如果我使用流,我可以通过自己关闭流来解决这个问题。另外,我使用的是 XLSX/XLSM 而不是 XLS 文件。]

想法?谢谢!

最佳答案

选项可以是:

  1. 创建文件副本并在副本上读/写
  2. 以只读方式打开原始文件,然后根据需要创建副本以写入
  3. 使用来自原始文件的输入流来创建工作簿

关于java - POI 读取文件而不更新文件时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39214769/

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