java.io.IOException markreset not supported 异常

当遇到`java.io.IOException: mark/reset not supported`异常时,问题在于尝试在不支持mark和reset操作的InputStream上使用这些方法。这是因为InputStream本身没有内置缓冲区,不支持回溯。为了解决这个问题,可以将原始InputStream包装成BufferedInputStream,因为BufferedInputStream提供了所需的缓冲功能。通过创建BufferedInputStream实例,如`BufferedInputStream bfi = new BufferedInputStream(is);`,即可启用mark和reset操作。

java.io.IOException: mark/reset not supported 异常

问题说明:

​ 给定的流不支持markreset操作

问题分析:

markreset操作要求输入流能够进行读写头的来回移动操作,一般在缓冲区内对输入流进行读写操作,而InpurStream输入流并无缓冲区,故InputStream不允许markreset机制

问题解决:

​ 由于markreset操作要求输入流有缓冲区,又由于BufferedInputStream继承于FilterInputStream,提供缓冲输入流功能,所以将InpurStream打包成BufferedInputStream即可。

代码:

// 定义一个输入流
InputStream is = null;

// 将 InputStream 输入流打包成 BufferedInputStream
BufferedInputStream bfi = new BufferedInputStream(is);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值