问题描述
- java web中FileInputStream的路劲老是找不到
-
用POI操作excell,但是文件路劲老找不到 ,应该怎么写啊
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import javax.faces.application.Application;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.jboss.weld.context.ApplicationContext;public class ExcellInfo {
private Map allSheet=new HashMap();public Map<String, List> getAllSheet() { return allSheet; } public void setAllSheet(Map<String, List> allSheet) { this.allSheet = allSheet; } public String getInfo() throws IOException{ System.out.println(this.getClass().getClassLoader().getResource("").getPath()); allSheet = getAllSheet("上海某购物中心"); return "ok"; } public Map<String,List> getAllSheet(String excellName) throws IOException{ Map<String,List> allSheet=new HashMap<String,List>(); List<List> list = null; List<String> context = null; InputStream inp = new FileInputStream("excell/"+excellName+".xlsx"); XSSFWorkbook wb = new XSSFWorkbook(inp); for (int i = 0; i < wb.getNumberOfSheets(); i++) { Sheet sheet = wb.getSheetAt(i); list = new ArrayList<List>(); for (Row row : sheet) { context = new ArrayList<String>(); for (Cell cell : row) { context.add(cell.toString()); } list.add(context); } allSheet.put(sheet.getSheetName(), list); } return allSheet; }
}
解决方案
InputStream inp = new FileInputStream("excell/"+excellName+".xlsx");
这相对路径对吗?打印出来看看。然后看看有没有这个路径,看看System.out.println(new File(".").getAbsolutePath());路径在哪里
最好加上class的路径比较明确
解决方案二:
windows下路径使用反斜杠\,另外在excell前面加上绝对路径看看。
excell,这个拼写也是错的,是不是excel
解决方案三:
我在java project中这么写是可以读取到的
System.out.println(new File(".").getAbsolutePath());的输出结果是E:apache-tomcat-7.0.52-windows-x64apache-tomcat-7.0.52bin.
小白望大神赐教啊
解决方案四:
打印一下路径,看看路径拼的对不对~
解决方案五:
打印一下路径,看看拼的对不对