黑马程序员技术交流社区
标题:
IO数组问题
[打印本页]
作者:
凝聚
时间:
2013-10-25 08:10
标题:
IO数组问题
本帖最后由 凝聚 于 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];这样的数组到底什么时候适合用啊,具体讲一下它的功能
作者:
1961993790
时间:
2013-10-25 08:25
字符流读取数据有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:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2