ron*_*tel 8 java xlsx apache-poi
我遇到了阅读.xlsx文件的问题.每当我使用WorkbookFactory.create(inputStream);时,都会在/ tmp/poifiles目录下创建一些具有随机名称的临时文件.该目录是使用第一个用户的RW-RR-权限创建的.所以当试图访问这些文件时,同一台机器上的另一个用户,他不能.
请以任何方式建议我
1)如何在/ tmp目录下创建这些临时文件,而不是总是在/ tmp/poifiles中创建(我使用的是RHEL V5.0)
2)以及如何配置POI,例如更改其读取临时文件的位置?
不再需要帮助解决我的问题,即不同的用户通过POI访问相同的.xlsx文件是非常需要的.
ron*_*tel 13
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;
}
Run Code Online (Sandbox Code Playgroud)
现在我们可以看到它从属性"java.io.tmpdir"获取位置并在其中创建poifiles目录...
我通过设置此属性(使用System.setProperty("java.io.tmpdir","somepath"))更改了java.io.tmpdir的位置到用户特定的位置...和Voila ....现在每个用户都可以创建位置上的临时文件始终可供他们访问,而且不仅第一个用户获得了创建只有他可访问的目录的权限...... !!!
小智 6
如果您无法更改系统属性“ java.io.tmpdir”,则可以通过以下方法更改POI以编程方式从其读取临时文件的位置。
File dir = new File("somepath");
dir.mkdir();
TempFile.setTempFileCreationStrategy(new DefaultTempFileCreationStrategy(dir));
Run Code Online (Sandbox Code Playgroud)
这是由Apache POI TempFile和DefaultTempFileCreationStrategy帮助程序类驱动的。
| 归档时间: |
|
| 查看次数: |
13274 次 |
| 最近记录: |