我遇到了阅读.xlsx文件的问题。每当我使用WorkbookFactory.create(inputStream);时,都会在/ tmp / poifiles目录下创建一些具有随机名称的临时文件。该目录是使用RW-R-R-为第一个用户创建的。所以当试图访问这些文件时,同一台机器上的另一个用户,他不能。
请以任何方式建议我
1)如何在/ tmp目录下创建这些临时文件,而不是总是在/ tmp / poifiles中创建(我使用的是RHEL V5.0)
2)如何配置POI,例如更改读取临时文件的位置?
非常需要帮助解决我的问题,即不同用户通过POI访问相同的.xlsx文件是非常需要的。
答案 0 :(得分:12)
Yuppie ......我得到了解决方案......
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”,“somepath”))更改了java.io.tmpdir的位置到用户特定的位置......和Voila ....每个用户现在可以在总是可以访问的位置创建临时文件,而不仅仅是第一个用户获得创建只能访问他的目录的权限...... !!!
答案 1 :(得分:4)
如果您无法更改系统属性“java.io.tmpdir”
,以下是如何更改POI以编程方式读取临时文件的位置File dir = new File("somepath");
dir.mkdir();
TempFile.setTempFileCreationStrategy(new TempFile.DefaultTempFileCreationStrategy(dir));
驱动的