Java中普遍应用流来与外部交换数据。比较典型的操作是操作文件与HttpServletRequest/Response流。
而Java中流处理中有个小型知识点在于流是不能重复读取的。伪代码如下
File file = new File( fileName);
FileInputStream fi = new FileInputStream(file);
HSSFWorkbook book = new HSSFWorkbook(fi);
int index = book.getNumberOfSheets();
for (int i = 0; i < index; i++) {
List<Map<Integer, String>> resultList =
ExcelUtil.readExcel(ExcelUtilEnum.EXCEL2003, book, i,0);
}
上面代码块中,代码可以正常运行
File file = new File( fileName);
FileInputStream fi = new FileInputStream(file);
HSSFWorkbook book = new HSSFWorkbook(fi);
int index = book.getNumberOfSheets();
for (int i = 0; i < index; i++) {
List<Map<Integer, String>> resultList =
ExcelUtil.readExcel(ExcelUtilEnum.EXCEL2003, fi, i);
}
而在第二个代码块中,运行代码会抛出异常,两者的区别在于代码块2中,重复读取了流。
这个点在于Java对于流的读取是通过指针性质的方式读取,这种方式只能向单边运行,并且不能从头再读取一次。