“线程中的异常”;“主要”;java.io.IOException:流已关闭
当我尝试从main方法执行下面的代码时,我得到了streamclosed错误。但是我的代码中没有关闭任何流。我甚至尝试在for循环之后关闭工作簿,但仍然得到了相同的错误。有人能帮我解决这个问题吗“线程中的异常”;“主要”;java.io.IOException:流已关闭,java,excel,Java,Excel,当我尝试从main方法执行下面的代码时,我得到了streamclosed错误。但是我的代码中没有关闭任何流。我甚至尝试在for循环之后关闭工作簿,但仍然得到了相同的错误。有人能帮我解决这个问题吗 Code: public class ExcelCompare { public void compare(String path1, String path2 ) throws IOException { FileInputStream fs = new FileInput
Code:
public class ExcelCompare
{
public void compare(String path1, String path2 ) throws IOException
{
FileInputStream fs = new FileInputStream(path1);
XSSFWorkbook wk = new XSSFWorkbook(fs);
XSSFSheet s = wk.getSheet("Sheet1");
int rcount = s.getPhysicalNumberOfRows();
FileInputStream fs1 = new FileInputStream(path2);
XSSFWorkbook wk1 = new XSSFWorkbook(fs);
XSSFSheet s1 = wk.getSheet("Sheet1");
for(int i=1; i<rcount; i++)
{
XSSFRow r = s.getRow(i);
XSSFRow r1 = s1.getRow(i);
int ccount = r.getPhysicalNumberOfCells();
for(int j=0;j<=ccount;j++)
{
XSSFCell c = r.getCell(j);
XSSFCell c1 = r1.getCell(j);
if(c.getCellType()==1)
{
if((c.getStringCellValue()).equals(c1.getStringCellValue()))
{
}
}
else
{
System.out.println("value mismatch"+ c.getStringCellValue() +c.getStringCellValue());
}
}
}
}
}
Error:
Exception in thread "main" java.io.IOException: Stream Closed
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:255)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
at org.apache.poi.util.BoundedInputStream.read(BoundedInputStream.java:121)
at org.apache.poi.util.BoundedInputStream.read(BoundedInputStream.java:103)
at org.apache.poi.util.IOUtils.copy(IOUtils.java:312)
at org.apache.poi.util.IOUtils.peekFirstNBytes(IOUtils.java:70)
at org.apache.poi.util.IOUtils.peekFirst8Bytes(IOUtils.java:57)
at org.apache.poi.poifs.filesystem.FileMagic.valueOf(FileMagic.java:135)
at org.apache.poi.openxml4j.opc.internal.ZipHelper.verifyZipHeader(ZipHelper.java:175)
at org.apache.poi.openxml4j.opc.internal.ZipHelper.openZipStream(ZipHelper.java:209)
at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:98)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:324)
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:295)
at excel.ExcelCompare.compare(ExcelCompare.java:21)
at excel.ExcelExecute.main(ExcelExecute.java:13)
代码:
公共课
{
公共无效比较(字符串路径1、字符串路径2)引发IOException
{
FileInputStream fs=新的FileInputStream(路径1);
XSSF工作簿wk=新XSSF工作簿(fs);
XSSFSheet s=wk.getSheet(“Sheet1”);
int rcount=s.getPhysicalNumberOfRows();
FileInputStream fs1=新的FileInputStream(路径2);
XSSF工作簿wk1=新XSSF工作簿(fs);
XSSFSheet s1=wk.getSheet(“Sheet1”);
对于(inti=1;i更新代码中的以下行,它将起作用
FileInputStream fs1 = new FileInputStream(path2);
XSSFWorkbook wk1 = new XSSFWorkbook(fs1);
XSSFSheet s1 = wk1.getSheet("Sheet1");
它与JavaScript无关。您从未使用过fs1
,wk1
在原始fs
中被传递。这可能是问题的原因。在使用了fs1和wk1后,代码工作正常,,感谢帮助:)在使用fs1和wk1后,代码工作正常,,感谢帮助:)