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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 践行渐远 于 2014-10-27 16:16 编辑

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileInputStreamDemo {
        /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {               
                FileInputStream fis = new FileInputStream("d:\\01.jpg");
                FileOutputStream fos = new FileOutputStream("d:\\copy.jpg");               
                int len = fis.available();//在此用available()方法,获取文件字节数。
              byte[] buf = new byte[len];

                fos.write(buf);
               
                fis.close();
                fos.close();
        }
}
      问题:用FileInputStream的available()方法,获取源的字节数,然后再进行写操作,最后生成的文件无法打开。
---------------------------------------------------------------------------------------------------
用以下方式,则没有问题:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileInputStreamDemo {
        /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {               
                FileInputStream fis = new FileInputStream("d:\\01.jpg");
                FileOutputStream fos = new FileOutputStream("d:\\copy.jpg");               
                byte[] buf = new byte[1024];
              int len = 0;
              while((len = fis.read(buf))!=-1){
                        fos.write(buf,0,len);
              }
               
                fis.close();
                fos.close();
        }
}

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

3 个回复

倒序浏览
你new了字节数组,直接写入文件?貌似都没读取数据到数组啊..
回复 使用道具 举报
哦哦,谢谢,确实是漏掉了一句。
问题代码还缺一句:fis.read(buf);
回复 使用道具 举报
cxdzh 发表于 2014-10-27 16:29
你new了字节数组,直接写入文件?貌似都没读取数据到数组啊..

哦哦,谢谢,:handshake。
确实是漏掉了一句,问题代码还缺一句:fis.read(buf);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马