字符流读取数据有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:} |