問題:
POI 生成文件時會根據“java.io.tmpdir”配置自動生成 {java.io.tmpdir}/poifiles/,Linux上是生成到 /tmp/poifiles。但是第一次訪問時,poi會創建poifiles文件夾,如果是非root用戶申請的,那么其他的非root用戶就沒有權限訪問了。這就會造成POI生成臨時文件失敗。
解決:
方法一(不推薦):
修改“java.io.tmpdir”對應的目錄,在linux上,java.io.tmpdir對應的目錄是/tmp,所以修改啟動參數,將“java.io.tmpdir”改為指定的目錄。但是這會造成該項目下所有的臨時文件路徑被修改
方法二:
在程序啟動時設置一次
//修改poi臨時文件路徑
File dir = new File(System.getProperty("java.io.tmpdir") , "test/poi");
FileUtils.forceMkdir(dir);
TempFile.setTempFileCreationStrategy(new DefaultTempFileCreationStrategy(dir));
注意 兩種方式同時存在時,以方式二執行
