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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 凝聚 中级黑马   /  2013-10-25 08:10  /  972 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 凝聚 于 2013-10-26 14:38 编辑

fos=new FileOutputStream("me.jpg");
        fis=new FileInputStream("D:\\图片\\自己喜欢的\\042c16d783e50817df8766894e89fff0.jpg");
byte[]buf=new byte[1024];
        int len=0;
        while((len=fis.read(buf))!=-1)
        {
                fos.write(buf,0,len);
               
        }

类似这样的代码中的byte[]buf=new byte[1024];这样的数组到底什么时候适合用啊,具体讲一下它的功能

2 个回复

倒序浏览
字符流读取数据有3种操作。

读取方法:int read()  读取单个字符;int read(char[] cbuf)  将字符读入数组,读取的字符数; abstract  int read(char[] cbuf, int off, int len)

分别简写为 1、不需要缓冲区  int ch =0; while ((ch=fis.read())!=-1){Sop((char)ch)}  fis.close();

2、用数组做缓冲区char [] buf=new char [1024];int len =0; while((len =fis.read(buf))!=-1){ Sop(new String(buf,0,len);}fis.close();

注:若文件里有abcdefg  7个字符,缓冲区长度为3,则若不用循环,read(buf)四次,并打印数组Sop(new String(buf),则结果为abc,def,gef,gef,其中len结果为3,3,1,-1

3、用BufferedReader: BufferedReader bufr=new BufferedReader(fr); String line=null;while((line=bufr.readLine())!=null){ Sop(line);} bufr.close();         

缓冲区的出现提高了数据的读写效率,要结合流才可使用(创建一个流对象和文件相关联),在流的基础上对流的功能进行增强;

缓冲原理是对象里面封装了数组。字符流缓冲区对应的类:BufferedWriter、BufferedReader.字节流缓冲区对应的类:BufferedInputStream、BufferedOutputStream.。

BufferedWriter 特有void newLine() 写入一个行分隔符;BufferedReader特有方法String readLine()读取一个文本行。只返回回车符之前的数据内容,不返回回车符;

代码中的byte[]buf=new byte[1024];实际上相当于缓冲流,提高了数据的读写效率,如果要读取的文件字节数很多,这时候建议使用:第二中方式,用数组做缓冲区
和第三种方式,用BufferedReader
希望对您有帮助!{:soso_e100:}

点评

赞一个!  发表于 2013-10-25 08:48
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马