0

下面的 scippet 效果很好,我已经在许多项目中使用它。但是,对于这个项目,我得到了一个找不到文件的异常。

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 服务器时,我才会遇到这些问题。

谢谢。

4

2 回答 2

0

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

FileInputStream is = new FileInputStream(file);

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

于 2012-09-24T06:51:17.170 回答
0

我改变了线路

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

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

上传现在有效。

于 2012-10-10T05:17:33.367 回答