为什么么有时候会出现复制的文件特别大的情况?

为什么么有时候会出现复制的文件特别大的情况?

http://img1.sycdn.imooc.com//climg/5ce6c6390001f16e10700062.jpg

public class Piture {
	public static void main(String[] args) {
		try {
			FileInputStream fis=new FileInputStream("G:\\File\\1.png");
			FileOutputStream fos=new FileOutputStream("G:\\File\\12.png");
			byte[] b=new byte[128];
			int n=0;
			while((n=fis.read(b))!=1) {
				fos.write(b);
			}
			fis.close();
			fos.close();
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch(IOException e) {
			e.printStackTrace();
		}
		
	}
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕小班 2019-05-24 15:35:47

同学你好,1、IndexOutOfBoundsException:错误是指:索引超出边界异常,比如list中没有数据 你去取list[0] 没有这条数据 就会报这个错误!

2、建议将while判断条件改为不等于-1,因为while结束循环的条件是等于-1!

http://img1.sycdn.imooc.com//climg/5ce79eb90001ed6803880165.jpg

这样就不会报错了哦!

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~


  • 提问者 彤宝贝 #1
    那还是没有解决复制的文件很大的问题啊?我将判断条件改为!=-1得出复制的文件还是很大
    2019-05-25 16:43:35
  • 提问者 彤宝贝 #2
    好了老师,我知道为什么了,谢谢
    2019-05-25 16:52:27
提问者 彤宝贝 2019-05-24 00:19:48

http://img1.sycdn.imooc.com//climg/5ce6c7c700018a7a09940220.jpg

public class Piture {
	public static void main(String[] args) {
		try {
			FileInputStream fis=new FileInputStream("G:\\File\\1.png");
			FileOutputStream fos=new FileOutputStream("G:\\File\\12.png");
			byte[] b=new byte[128];
			int n=0;
			while((n=fis.read(b))!=1) {
				fos.write(b,0,n);
			}
			fis.close();
			fos.close();
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch(IOException e) {
			e.printStackTrace();
		}
		
	}
}

我这样写的话保证了文件大小的一致性,并且能完整的复制粘贴图片,为什么还出现异常了呢?

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师