以下代码段效果很好,我在很多项目中都使用过它。但是,对于这个项目,我得到一个未找到文件的例外。
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服务器时,我才会遇到这些问题。
感谢。
答案 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));
现在上传有效。