资源描述:
《Java IO流详细总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、I/O流(输入/输出流)一、字节流1)基本字节流InputStream抽象了以字节读取数据的方式;OutputStream抽象了以字节写出数据的方式;2)EOF=End=读到-1就读到结尾;3)InputStream基本方法:in.read();//读取一个字节无符号填充到int低八位,-1是EOFin.read(byte[]buf);in.read(byte[]buf,intstart,intsize)4)OutputStream基本方法out.write(intb);//写出一个byte到流,b的低八位out.write(byte[]buf);//将buf字节数组都写入到流out.w
2、rite(byte[]buf,intstart,intsize)5)文件字节流FileInputStream--->具体实现了在文件上读取byte数据的方法FileOutputStream--->具体实现了向文件中写出byte数据的方法6)DataOutputStream/DataInputStream对流功能的扩展,可以更加方便的读取int,long,字符等类型数据DataOutputStream:由FileOutputStream构造出来,通过包装FileOutput,可以调用FileOutput类的write方法来构造新的更方便的写方法:DataOutputStreamdos=ne
3、wDataOutputStream(newFileOutputStream(file))dos.writeInt(10);dos.writeLong(10l);dos.writeDouble(10.5);(DataInputStream和DataOutputStream类似)8)BufferedInputStream/BufferedOutputStream为IO提供了带缓冲区的操作,提高了流模式的IO的性能FileOutputStream--->write()方法相当于一滴一滴地把水"转移"过去DataOutputStream--->write()方法相当于一瓢一瓢地把水"转移"过去B
4、ufferedOutputStream--->write()方法相当于一瓢一瓢先放入桶中(缓冲区),再从桶中倒入到另一缸中.--单字节读取:方法:intb=in.read()效率低(没有缓冲区),一般不用与大文件的读取--批量读取:方法:intbytes=in.read(byte[]b,intstart,intlength)效率高(利用了缓冲区),一般用于大文件读取,是常用的文件读取方法9)输入输出流的联合使用:1、开启流FileInputStreamin=newFileInputStream(srcFile);//需要判断的是srcFile是否存在,是否是文件;若是文件,则进行后续操作
5、FileOutputStreamout=newFileOutputStream(destFile);//因为destFile即使不自己创建,程序也会帮忙创建,所以不用判断是否存在,是否文件2、进行读写操作。批量读取——建立缓冲区byte[]buf=newbyte[2*1024];intb=in.read(buf));//判断是否读完,-1则读完,b的值是读到的个数,他并不会等于-1只是b=in.read(buf)整个等于-1则代表读取完毕了。如果第一次不等于-1则读取第二次,直到读完为-1为止.循环批量读取intbytes;while((bytes=in.read(buf,0,buf.l
6、ength))!=-1){out.write(buf,0,bytes);}二、字符流1、基本字符流Reader抽象了以字符读取数据的方式Writer抽象了以字符写出数据的方式1)Reader基本方法:intb=in.read();//读一个字符,当流中没有数据可读时,返回值为-1in.readread(char[]c);//根据数组尺寸从流中读字符,置于数组中。返回读取字符个数。in.read(char[]c,intoff,intlen)//读入len个字符,从下标off开始置入数组cbufin.close()//关闭流2)Writer基本方法out.write(intb);//写一个字
7、符数据out.write(char[]cbuf);//向流中写字符数组cbufout.write(Strings);//向流中写一个字符串(很实用)out.flush();//将缓冲区中数据立即写入到输出流,刷新缓冲区out.close();//关闭流注:字符流一次处理一个字符,底层仍然是基本的字节序列;字符流操作的是文本文件2、字符流的基本实现1)InputStreamReader/OutputStreamWriter--Inpu