A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

        public static void main(String[] args) throws Exception{
                // TODO Auto-generated method stub
                File file=new File("D:\\我的文档\\图片收藏\\北航\\DSC_0008.JPG");
                FileInputStream fis=new FileInputStream(file);
                FileOutputStream fos=new FileOutputStream("C:\\Users\\Administrator\\Desktop\\a.jpg");
                int len=0;
                byte[] bs=new byte[1024*2];
                while((len=fis.read())!=-1){
                        fos.write(bs,0,len);
                }
                fis.close();
                fos.close();
        }
程序能顺利运行,就是保存到桌面后图片空白!!!

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 粗糙了一把~

查看全部评分

9 个回复

倒序浏览
本帖最后由 李慧声 于 2013-11-7 09:55 编辑

       byte[] bs=new byte[1024*2];
                while((len=fis.read())!=-1){
                        fos.write(bs,0,len);
                }
你bs数组中啥都没有,你就去写到本地去了,得到的图片可不就一片空白嘛~~
要把对到的数据,撞到缓冲区中区,或者你不用缓冲区直接去写就是喽。
两种解决方法
一:
   while((len=fis.read(bs))!=-1){
                        fos.write(bs,0,len);
                }
二:
  while((len=fis.read())!=-1){
                       fos.write(len);
                }
凭个人爱好选一种,OK,
楼主侧漏自己是北航的了~~~

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
fis.read() 中需要将bs传进去;
fis.read(bs)

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼主对IO流的理解不是很透啊,不然不会出现这样的错误了。
回复 使用道具 举报
帖子已分类~
回复 使用道具 举报
王松松 发表于 2013-11-7 08:44
楼主对IO流的理解不是很透啊,不然不会出现这样的错误了。

我不会告诉你我是菜鸟
回复 使用道具 举报
王松松 发表于 2013-11-7 08:44
楼主对IO流的理解不是很透啊,不然不会出现这样的错误了。

我不会告诉你我是菜鸟
回复 使用道具 举报
李慧声 发表于 2013-11-7 01:22
byte[] bs=new byte[1024*2];
                while((len=fis.read())!=-1){
                    ...

谢谢,疏忽了
回复 使用道具 举报
李慧声 发表于 2013-11-7 01:22
byte[] bs=new byte[1024*2];
                while((len=fis.read())!=-1){
                    ...

:lol 眼神很犀利啊!不过我可没说就是
回复 使用道具 举报
↙五线谱╲ 发表于 2013-11-7 18:00
眼神很犀利啊!不过我可没说就是

呵呵 一种猜测,应该是北航的,默认就是的喽~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马