大家好,我是小鱼!一、基本概念IO流用于处理设备间的数据传输。Java对数据的操作都是以流的形式进行的。Java的操作流的类都在IO包中。2.IO流的分类3.字节流字节流可以操作任何数据,因为计算机中任何数据都是以字节的形式存储的,所以不多说直接上例子:1.FileInputStream(下java.iopackage)Inputstream(read)//创建流对象FileInputStreamfis=newFileInputStream("xxx.txt");//从硬盘读取一个字节intx=fis.read();System.out.println(x);inty=fis.read();System.out.println(y);intz=fis.read();System.out.println(z);//读取文件结束标志为-1inta=fis.read();System.out.println(a);//关闭流并释放资源fis.close();读取文件中的所有字节FileInputStreamfis=newFileInputStream("xxx.txt");诠释吨;while((t=fis.read())!=-1){System.out.println(t);}fis.close();2.FileOutputStreamoutput(write)//输出流创建字节如果没有输出流对象,会自动创建一个文件。FileOutputStreamfos=newFileOutputStream("yyy.txt");//添加的AsCll码表的值fos.write(97);fos.write(98);福斯。关闭();3。档案续在写//FileOutputStream创建对象时,如果没有这个文件,就会创建。如果有这样的文件,会先清除,然后write//outputstream,创建一个字节输出流对象。如果没有,会自动创建一个文件FileOutputStreamfos=newFileOutputStream("yyy.txt",true);//如果要继续写,第二个参数传True//添加的AsCll码表fos的值.write(100);fos.close();bytestreambuffer如果我们逐字节传输文件,效率很低,所以使用buffer。缓冲区BufferedInputStream有一个内置的缓冲区,当从BufferedInputStream中读取一个字节时,BufferedInputStream会从文件中获取8192字节(2^13),将它们存储在缓冲区中,然后返回给一个程序,等待数据被直接取到缓冲区,直到取完所有8192字节,BufferedInputStream会再次从文件中取8192字节直接上图:接下来看一个例子:4.复制图片文件//创建输入输出流对象FileInputStreamfis=newFileInputStream("copy.png");FileOutputStreamfos=newFileOutputStream("copy2.png");//创建一个缓冲对象,将输入输出流包装起来,功能更强大BufferedInputStreambis=newBufferedInputStream(fis);BufferedOutputStreambos=newBufferedOutputStream(fos);诠释乙;while((b=bis.read())!=-1){bos.write(b);}bis.close();bos.close();1.flush和close方法的区别/***@paramargs*@throwsIOException*close方法*和refresh函数,在关闭stream之前,会刷新一次buffer,把buffer中的所有字节都flush掉到文件,然后关闭。*close刷新后不能写*flush方法*有了刷新功能,刷新后可以继续写*/publicstaticvoidmain(String[]args)throwsIOException{//demo();//flush和close方法的区别BufferedInputStreambis=newBufferedInputStream(newFileInputStream("Copy.png"));BufferedOutputStreambos=newBufferedOutputStream(newFileOutputStream("Copy3.png"));诠释乙;while((b=bis.read())!=-1){bos.write(b);}bos.close();}4、字符流只能对纯文本文件进行操作,直接上传代码示例更方便:1、字符流读取FileReaderfr=newFileReader("xxx.txt");诠释c;while((c=fr.read())!=-1){//通过默认码表一次读取一个字符chars=(char)c;系统。out.print(s);}fr.close();2。字符流拷贝FileReaderfr=newFileReader("xxx.txt");FileWriterfw=newFileWriter("zzz.txt");诠释c;while((c=fr.read())!=-1){fw.write(c);}fr.close();fw.close();//write类中有一个2k的小缓冲区,如果没有关闭流,内容就会写入缓冲区。字符流缓冲区BufferedReader类从字符输入流中读取文本并对字符进行缓冲,以高效读取字符、数组和行。我们通过一张图来理解:1.Bufferedcharacterstream/***@paramargs*@throwsIOException*bufferedstream的特殊方法*readLine()获取一行文本*newLine()换行的功能**newLine()\r\n区别*newLine()是跨平台方法*\r\n只支持windows系统*/publicstaticvoidmain(String[]args)throwsIOException{//demo1();BufferedReaderbr=newBufferedReader(newFileReader("xxx.txt"));BufferedWriterbw=newBufferedWriter(newFileWriter("yyy.txt"));弦线;while((line=br.readLine())!=null){bw.写(行);bw.newLine();//换行函数System.out.println(line);}br.close();bw.close();}2。实现将一个文件复制到另一个文件中倒序排序。/***@paramargs*@throwsIOException*流对象应该尽可能晚打开和早关闭**复制一个文件,并以相反的顺序到另一个文件。*/publicstaticvoidmain(String[]args)throwsIOException{//1.创建流对象BufferedReaderbr=newBufferedReader(newFileReader("xxx.txt"));//2。创建集合对象ArrayList
