我被一个读取.xlsx文件的问题所困扰。每当我使用WorkbookFactory.create(inputStream);时,都会在/tmp/poifiles目录下创建一些具有随机名称的临时文件。此目录是使用第一个用户的RW-R-R权限创建的。因此,当同一台机器上的另一个用户试图访问这些文件时,他无法访问这些文件。
请以任何方式给我建议
1)如何在/tmp目录下创建这些临时文件,而不是总是在/tmp/poifiles中(我使用的是RHELV5.0)
2)如何配置POI,如更改读取临时文件的位置??
现在迫切需要帮助解决不同用户通过POI访问相同.xlsx文件的问题。
发布于 2011-03-16 19:20:24
雅皮士...我有办法了..。
POI使用以下方法创建临时文件。
public static File createTempFile(String prefix, String suffix)
{
if (dir == null) {
dir = new File(System.getProperty("java.io.tmpdir"), "poifiles");
dir.mkdir();
if (System.getProperty("poi.keep.tmp.files") == null) {
dir.deleteOnExit();
}
}
File newFile = new File(dir, prefix + rnd.nextInt() + suffix);
if (System.getProperty("poi.keep.tmp.files") == null) {
newFile.deleteOnExit();
}
return newFile;
}现在我们可以看到,它从属性"java.io.tmpdir“中获取位置,并在其中创建poifiles目录……
我通过将此属性(使用System.setProperty(" java.io.tmpdir ",“java.io.tmpdir”))设置为用户特定的location..and Voila....Every用户现在可以在其始终可访问的位置创建临时文件,并且不仅第一个用户获得创建仅其可访问的目录的权限...!
发布于 2016-02-17 17:49:39
下面是如何在无法更改系统属性"java.io.tmpdir“的情况下,以编程方式更改POI读取临时文件的位置
File dir = new File("somepath");
dir.mkdir();
TempFile.setTempFileCreationStrategy(new DefaultTempFileCreationStrategy(dir));这是由Apache POI TempFile和DefaultTempFileCreationStrategy助手类驱动的。
https://stackoverflow.com/questions/5297911
复制相似问题