日期:2014-05-20  浏览次数:20756 次

关于InputStream的markSupported方法的问题
我想问一下:
markSupported()在什么情况下返回true?
也就是说
什么样的FileInputStream是支持mark和reset方法的?
另外,
for(int   i   =   0;   i   <   fis.availble();i++)
{
          fos.write(fis.read());
}
其中fos,fis分别表示FileOutputStream和FileInputStream的对象
为什么这个循环只执行了fis实际大小的一半呢?

------解决方案--------------------
up
------解决方案--------------------
RandomAccessFile打开的?
------解决方案--------------------
1)
BufferedInputStream支持markSupported(),你可以用如下的方法打开一个文件:

BufferedInputStream in = new BufferedInputStream( new FileInputStream( fileName ) );

2)你写的
for(int i = 0; i < fis.availble();i++)
{
fos.write(fis.read());
}

有问题,应该改为:

for(;;)
{
int ch = fis.read();
if( ch < 0 ) break;
fos.write( ch );
}