javaio流学习总结javaio流学习总结总结一:javaio流学习总结一、IO流的三种分类方式1.按流的方向分为:输入流和输出流2.按流的数据单位不同分为:字节流和字符流3.按流的功能不同分为:节点流和处理流二、IO流的四大抽象类:字符流:Reader Writer字节流:InputStream(读数据)OutputStream(写数据)三、InputStream的基本方法int read() thros IOExeption 读取一个字节以整数形式返回,如果返回-1已到输入流的末尾void lose() thros IOExeption 关闭流释放内存资源long skip(long n) thros IOExeption 跳过n个字节不读四、OutputStream的基本方法void rite(int b) thros IOExeption 向输出流写入一个字节数据void flush() thros IOExeption 将输出流中缓冲的数据全部写出到目的地五、Writer的基本方法void rite(int ) thros IOExeption 向输出流写入一个字符数据void rite(String str) thros IOExeption将一个字符串中的字符写入到输出流void rite(String str,int offset,int length)将一个字符串从offset开始的length个字符写入到输出流void flush() thros IOExeption将输出流中缓冲的数据全部写出到目的地六、Reader的基本方法int read() thros IOExeption 读取一个字符以整数形式返回,如果返回-1已到输入流的末尾七、节点流类型八、访问文件之FileInputStream和FileOutputStream继承基类用于向文件中输入输出字节九、访问文件之FileReader和FileWriter继承基类用于向文件中输入输出字符----输出流在构造函数第二个参数可以设置true意义为跟在已有文件后进行输入----此类流会抛出FileNotFoundExeption需要对其进行显示捕捉十、缓冲流:缓冲流要套接在相应的节点流之上,提高了读写的效率。
此处理流的构造方法都得传相对应的基类类型BufferedReader:提供了readLine方法用于高校读取一行字符串BufferedWriter:提供了neLine用于写入一个行分隔符也就是换行BufferedInputStream 没多大用处BufferedOutputStream 没多大用处十一、转换流:主要作用将字节流转换成字符流。
用处较大!转换流在构造时可以指定其编码集合InputStreamReader需要和InputStream套接OutputStreamWriter需要和OutputStream套接例:OutputStreamWriter os = ne OutputStreamWriter (ne FileOutputStream(文件路径);方法例:os.getEnoding();获得流的编码方式十二、数据流与字节数组流:数据流主要为实现可以存取Java原始数据类型如long,boolean 数据流是字节流DataInputStream需要和InputStream套接DataOutputStream需要和OutputStream套接DataInputStream方法:readBoolean() readInt() read ()readUTF():网络传输常用方法读一个Uniode字符串DataOutputStream方法与DataInputStream基本对应为写的方法此构造函数等于已可以往一个字节数组里输入内容BteArraOutputStream baos = ne BteArraOutputStream ();此方法为获取一个字节数组方法返回字节数组baos.toBteArra();此方法获取字节数组占了多少字节ne BteArraInputStream(一个字节数组)。
available()1BteArraOutputStream baos =2 ne BteArraOutputStream{16 e.printStakTraethros Exeption {5 T t = ne T;6 t.k = 8;7 FileOutputStream fos = ne FileOutputStream;9 oos.riteObjet;10 oos.flush;11 oos.lose;1213 FileInputStream fis = ne FileInputStream;15 T tReaded = ois.readObjet;16 Sstem.out.println;1718 }19 }2021 lass T22 implements Serializable23 {24 int i = 10;25 int j = 9;26 double d =2.3;27 transient int k = 15;28 }总结二:javaio流学习总结今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结:IO流主要用于硬板、内存、键盘等处理设备上得数据操作,根据处理数据的数据类型的不同可以分为:字节流(抽象基类为InPutStream和OutPutStream)和字符流(抽象基类为Reader和Writer)。
根据流向不同,可以分为:输入流和输出流。
字符流和字节流的主要区别:1.字节流读取的时候,读到一个字节就返回一个字节;字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。
先去查指定的编码表,将查到的字符返回。
2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。
只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。
IO流主要可以分为节点流和处理流两大类。
一、节点流类型该类型可以从或者向一个特定的地点或者节点读写数据。
二、处理流类型该类型是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写,处理流的构造方法总是要带一个其他流对象作为参数,一个流对象进过其他流的多次包装,叫做流的链接。
主要可以分为以下几种:1、缓冲流(BufferedInPutStreamBufferedOutPutStream和BufferedWriterBufferedReader)他可以提高对流的操作效率。
该类型的流有一个特有的方法:readLine;一次读一行,到行标记时,将行标记之前的字符数据作为字符串返回,当读到末尾时,返回null,其原理还是与缓冲区关联的流对象的read方法,只不过每一次读取到一个字符,先不进行具体操作,先进行临时储存,当读取到回车标记时,将临时容器中储存的数据一次性返回。
2、转换流(InputStreamReaderOutputStreamWriter)该类型时字节流和字符流之间的桥梁,该流对象中可以对读取到的字节数据进行指定编码的编码转换。
注意:在使用FileReader操作文本数据时,该对象使用的时默认的编码表,即FileReader fr=ne FileReader; 与InputStreamReader isr=ne InputStreamReader); 的意义相同。
如果要使用指定表编码表时,必须使用转换流,即如果a.txt中的文件中的字符数据是通过utf-8的形式编码,那么在读取时,就必须指定编码表,那么转换流时必须的。
即:InputStreamReader isr=ne InputStreamReader,utf-8);3、数据流(DataInputStreamDataOutputStream)该数据流可以方便地对一些基本类型数据进行直接的存储和读取,不需要再进一步进行转换,通常只要操作基本数据类型的数据,就需要通过DataStream进行包装。
四、打印流(PrintStreamPrintWriter)PrintStream是一个字节打印流,Sstem.out对应的类型就是PrintStream,它的构造函数可以接受三种数据类型的值:1.字符串路径。
2.File对象3.OutputStreamPrintStream是一个字符打印流,它的构造函数可以接受四种类型的值:1.字符串路径。
2.File对象3.OutputStream4.Writer 对于1、2类型的数据,可以指定编码表,也就是字符集,对于3、4类型的数据,可以指定自动刷新,当该自动刷新为True 时,只有3个方法可以用:println,printf,format。
五、对象流(ObjetInputStreamObjetOutputStream)该类型的流可以把类作为一个整体进行存取,主要方法有:Objet readObjet;该方法抛出异常:ClassNotFountExeption。
void riteObjet:被写入的对象必须实现一个接口:Serializable,否则就会抛出:NotSerializableExeption 总结三:javaio流学习总结流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。
即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流字符流和字节流字符流的由来:因为数据编码的不同,而有了对字符进行高效操作的流对象。
本质其实就是基于字节流读取时,去查了指定的码表。
字节流和字符流的区别:读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
处理对象不同:字节流能处理所有类型的数据(如图片、avi 等),而字符流只能处理字符类型的数据。
结论:只要是处理纯文本数据,就优先考虑使用字符流。
除此之外都使用字节流。
输入流和输出流对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。
Java IO流对象1.输入字节流InputStreamIO 中输入字节流的继承图可见上图,可以看出:InputStream 是所有的输入字节流的父类,它是一个抽象类。
BteArraInputStream、StringBufferInputStream、FileInputStream 是三种基本的介质流,它们分别从Bte 数组、StringBuffer、和本地文件中读取数据。