使用java POI读取文件经常会发现流关不掉,导致源文件无法删除,令人头疼,网上基本上也找不到靠谱的解决方法。
之前代码出错是这样的:
第一种:
InputStream inputStream=new FileInputStream(file);// (1)
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);//
(2)
第(2)行红色部分提示错误,错误是:“The constructor XSSFWorkbook(FileInputStream) is undefined”
第二种:
去掉输入流,直接 XSSFWorkbook workbook = new XSSFWorkbook(file);
它没报错,也可以运行,还可以正常读取xlsx文件,可是它就是关不掉流,确却的说是找不到流让你关。这样就导致源文件死活也删不掉。
解决方法如下:
把以上代码改为:
InputStream inputStream=new FileInputStream(file);
Workbook workbook = WorkbookFactory.create(inputStream);
inputStream.close();
解决!
参考网址:http://poi.apache.org/spreadsheet/quick-guide.html#ReadWriteWorkbook