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

时间:2016-08-29 20:35:32

标签: java apache-poi

似乎可以使用

打开Excel文件
Workbook wb = WorkbookFactory.create(myFile);

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

wb.close();

...释放资源将导致文件系统上的文件被更新(至少时间戳将是,如果没有别的话)。我找到的唯一方法是指定应使用

创建“只读”工作簿
Workbook wb = WorkbookFactory.create(myFile, true);

我要做的是以下内容:

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

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

[顺便说一句,我正在从文件而不是流创建工作簿,因为我知道它更有效。如果我使用了一个流,我可以通过自己关闭流来解决这个问题。此外,我正在使用XLSX / XLSM而不是XLS文件。]

思考?谢谢!

1 个答案:

答案 0 :(得分:1)

选项可以是:

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