文件未找到异常,代码片段在其他项目中完美运行

时间:2012-09-24 06:34:01

标签: file-upload playframework playframework-1.x

以下代码段效果很好,我在很多项目中都使用过它。但是,对于这个项目,我得到一个未找到文件的例外。

try {
        FileInputStream is = new FileInputStream(file);
        String original = file.getName();

        Logger.debug("Filename in upload pf %s ", original);
        IOUtils.copy(is, new FileOutputStream(Play.getFile(original)));

        PfParser p1 = new PfParser();
        p1.read(original, month, year);

        Payroll.index();

    } catch (FileNotFoundException e) {
        Logger.error(e, "Exception in uploadSheet: ");
        e.printStackTrace();
    } catch (IOException e) {
        Logger.error(e, "Exception in uploadSheet: ");
        e.printStackTrace();
    }

这是读取方法,我尝试了一些注释掉的组合:

FileInputStream myInput = new FileInputStream(
                System.getProperty("user.dir") + inputFile);
        w = Workbook.getWorkbook(myInput);
        // w = Workbook.getWorkbook(new File(inputFile));
        // w = Workbook.getWorkbook(new File(System.getProperty("user.dir"),
        // inputFile));

这会将文件上传到C:\Program Files (x86)\Apache Software Foundation\Tomcat 6.0\webapps\ROOT\WEB-INF\application文件夹。

我正在尝试使用Jexcel读取excel文件。我在服务器上遇到的错误:

java.io.FileNotFoundException: foo.xls (The system cannot find the file specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)

尝试其他(注释掉的)行,只会给出错误的变化。

java.io.FileNotFoundException: C:\Program Files (x86)\Apache Software Foundation\Tomcat 6.0\foo.xls (The system cannot find the file specified)

我理解它与绝对和相对路径有关的问题,但似乎无法找到解决方案。在我的本地机器Ubuntu上进行编码和测试时,我没有遇到任何错误。只有当我部署到Windows服务器时,我才会遇到这些问题。

感谢。

2 个答案:

答案 0 :(得分:0)

当文件不在您在FileInputStream构造函数中提供的绝对/相对路径上时,会出现 FileNotFound 异常。

FileInputStream is = new FileInputStream(file);

我怀疑你没有在FileInputStream构造函数中给出正确的位置。如果你编写完整的spinet包括文件位置等,那将是件好事。

答案 1 :(得分:0)

我从

改变了这一行

IOUtils.copy(is, new FileOutputStream(Play.getFile(original)));

IOUtils.copy(is, new FileOutputStream("./" + original));

现在上传有效。