即使在缓冲区写入关闭后,也找不到文件异常

时间:2017-01-17 03:53:59

标签: java io struts2

新编辑: 现在我找到了原因,这是因为有两个服务器,它写入第一个服务器的临时文件夹,并尝试从第二个服务器读取。但我仍然没有找到解决方案,除非写入Amazon S3并从那里读取。

我尝试使用struts2动作导出csv。但是,如果我尝试导出10次,我只能成功一次,所有其他人都会因为找不到文件异常而失败(如果我再次刷新链接,则可以下载该文件)。这是我的代码:

public String exportFile(String fileName) {
    File exportFile = null;
    try {
        if (CollectionUtils.isEmpty(receipts)) {
            return "";
        }

        exportFile = File.createTempFile(fileName, ".csv");
        exportFile.deleteOnExit();
        try (BufferedWriter fw = new BufferedWriter(new FileWriter(exportFile))) {
            try {
                fw.write("test");
            } finally {
                fw.close();
            }
        }
        return exportFile.getPath();
    } catch (Exception ex) {
        logger.error("Error exporting report. ", ex.getMessage());
    }
    return "";
}

String getStreamFromPath(String filePath) {
    try {
        File downloadFile = new File(filePath);
        fileInputStream = new FileInputStream(downloadFile);
        return SUCCESS;
    } catch (IOException e) {
        log.error(e.getMessage(), e);
        return ERROR;
    }
}

这真的很奇怪,当我在另一台服务器上测试它完全正常。有什么想法吗?

0 个答案:

没有答案