请教一个java读文件的异常

foxittle 2005-11-21 09:34:43
先谢了。

代码情况:java读excel文件,使用poi,异常出在第二行代码。

FileInputStream fin=new FileInputStream(filename);
POIFSFileSystem fs = new POIFSFileSystem(fin);

异常描述:Unable to read entire block; 136 bytes read; expected 512 bytes

我想知道,产生这种异常的原因是什么?
另外有一个奇怪的现象,如果在运行此段代码前,先把出异常excel文件用excel打开一遍再关掉,代码就可以正常运行,这是为什么呢?

请各位帮帮忙,谢谢。



...全文
241 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
foxittle 2005-11-23
  • 打赏
  • 举报
回复
真是郁闷,这问题没能搞定。

如你所说,估计是“excel的文档结构中有什么符号或者格式有问题”。

如今读异常的文件已增至8个,原因是对excel文件重命名(不是打开另存,仅仅是重命名)。另外,发现有读异常的文件在用excel打开后文件大小都会变化(比原来大了0.6kb左右)。

老系统的东东果然够狠。
kiteprince 2005-11-22
  • 打赏
  • 举报
回复
按照你所描述的第二点分析
真的可能是因为部分生成的文档中存在不能够解析或者解析出错的内容
所以测试一下吧
祝你成功
foxittle 2005-11-21
  • 打赏
  • 举报
回复
谢谢楼上:

// 在用excel打开的时候有没有提示你保存或者已经修订了过内容?
没有任何提示,正常打开。原excel文件版本不清楚,我用excel 2k打开的。

// 您所使用的excel档案是由什么生成的,软件的版本与你打开使用的是否相同?
也是由程序生成的。是组合式的报表,12份,只有4份会出现这个异常。生成的版本无法确认了,那是老系统遗留的。觉得不像版本的问题,因为报表格式一样的,却只有部分文件出异常。

// 截取部分excel档案的内容再进行操作(排除法确认在什么位置出现的错误)!
试一试,谢谢。
kiteprince 2005-11-21
  • 打赏
  • 举报
回复
这个应该是excel的文档结构中有什么符号或者格式有问题,在进行文件流读取的时候不能读取档案,当你用excel打开以后,格式被excel强行修订了。
确认要点:
在用excel打开的时候有没有提示你保存或者已经修订了过内容?
截取部分excel档案的内容再进行操作(排除法确认在什么位置出现的错误)!
您所使用的excel档案是由什么生成的,软件的版本与你打开使用的是否相同?
以上各点,自己仔细对照。找出问题点!

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧