首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改使用Apache POI创建的临时文件的位置

更改使用Apache POI创建的临时文件的位置
EN

Stack Overflow用户
提问于 2011-03-14 19:24:48
回答 2查看 18K关注 0票数 10

我被一个读取.xlsx文件的问题所困扰。每当我使用WorkbookFactory.create(inputStream);时,都会在/tmp/poifiles目录下创建一些具有随机名称的临时文件。此目录是使用第一个用户的RW-R-R权限创建的。因此,当同一台机器上的另一个用户试图访问这些文件时,他无法访问这些文件。

请以任何方式给我建议

1)如何在/tmp目录下创建这些临时文件,而不是总是在/tmp/poifiles中(我使用的是RHELV5.0)

2)如何配置POI,如更改读取临时文件的位置??

现在迫切需要帮助解决不同用户通过POI访问相同.xlsx文件的问题。

EN

回答 2

Stack Overflow用户

发布于 2011-03-16 19:20:24

雅皮士...我有办法了..。

POI使用以下方法创建临时文件。

代码语言:javascript
复制
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用户现在可以在其始终可访问的位置创建临时文件,并且不仅第一个用户获得创建仅其可访问的目录的权限...!

票数 15
EN

Stack Overflow用户

发布于 2016-02-17 17:49:39

下面是如何在无法更改系统属性"java.io.tmpdir“的情况下,以编程方式更改POI读取临时文件的位置

代码语言:javascript
复制
File dir = new File("somepath");
dir.mkdir();
TempFile.setTempFileCreationStrategy(new DefaultTempFileCreationStrategy(dir));

这是由Apache POI TempFileDefaultTempFileCreationStrategy助手类驱动的。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5297911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档