io流总结

Java中的IO流也是也是我们经常用的的比较重要的类,其中比较重要的流就是字节/字符输入(I)和字节/字符输出流

1.字节输出流(OutputStream 抽象父类):将内存中的数据写入到磁盘中

常用方法:

                void write(int i);//写出一个字节的数据

 

                void write(byte[] b);//将byte数组中的数据写出去

                void write(byte[] b,int offset,int len);//将byte数组中从索引值offset位置开始,长度为len的数据写出到磁盘中

                void flush();//刷新(清空)缓冲区,在字节缓冲输出流用的比较多

                void close();//释放资源

因为它是一个抽象父类,没有办法直接new,所以还需先介绍一下它的常用子类:

 

常用子类1:FileOutputStream 以下是它常用的几个构造方法

 

                public FileOutputStream(String pathname)//传入String类型的参数

 

                public FileOutputStream(File patname);//传入File类型参数

 

                public FileOutputStream(String pathname,boolean append);//传入String类型参数,并判断是否覆盖原来数据,覆盖为false,不覆盖为true(需要注意的是,以上四个构造方法底层其实都是第四个构造方法,后面没有写布尔值参数,所以默认都是false覆盖)

常用子类2:BufferedOutputStream(字节缓冲输出流) 以下是它常用的构造方法:

 

                    public BufferOutputStream(OutputStream os);//传入字节输出流类型对象

 

调用此构造方法时,底层会创建一个长度是8192的byte数组,当调用write方法写出数据时,数据会被存储在这个8192的数组中,当该数组存满时,或者调用close(flush)方法时,就会把缓冲区中的数据写出去(如果没有存满,并且不调用close/flush方法时,数据是不能写出到磁盘中的)

 

                public BufferedOutputStream(OutputStream os,int size);//传入字节输出流类型对象,并且可以指定缓冲区大小

 构造方法:public ObjectOutputStream(OutputStream os);//传入字节输出流类型对象

 

成员方法:void writeObject(对象名);//写出对象

 

常用子类3:打印流(PrintStream)  

 

                成员方法:①void println();//无参构造,默认打印到控制台

 

                               ② void println(参数);//有参构造,默认打印到控制台

 

                构造方法:①public PrintStream(String pathname);//传入打印地址,String类型参数

 

                                  ②public PrintStream(File Pathname);//传入File类型对象,改变打印地址

 

在配合上System.SetOut(PrintStream ps)方法,就可以改变我们打印的流向

 

2.字节输入流(InputStream 抽象父类):将磁盘中的数据读取到内存中

 

常用方法:     

 

               ① int read();//读取一个字节的数据,返回读取的一个字节,如果没有则返回-1;

 

               ② int read(byte[] b);//读取数据存入byte类型的数组中,返回读取的长度,如果没有则返回-1;

 

                ③void close();//释放资源    

 

常用子类1:FileInputStream,以下是它常用的两个构造方法:

 

        构造方法:public FileInputStream(String Pathname)//传入String类型的文件地址

 

                          public FileInputStream(File Pathname)//传入file类型参数

 

常用子类2:BufferedInputStream(字节缓冲输入流)以下是它常用的两个构造方法:

 

        构造方法:①public BufferedInputStream(InputStream is)//传入InputStream类型的对象

 

       调用这个构造方法的时候,底层会创建一个长度为8192的byte的数组,当第一次数据的时候读取的数据会先存入这个8192的byte数组中,然后从对应的位置获取元素进行操作。

 

                        ②public BufferedInputStream(InputStream is,int size)//同样可以传入InputStream类型的对象,但是这个构造方法可以指定缓冲去的大小,可以传入对应数组长度

3.字符输出流(Writer 抽象父类)

 

        成员方法: ①void writer(int b);//写出一个字符

 

                           ② void writer(char[] ch);//将char数组中的数据写出去

 

                           ③ void writer(char[] ch,int offset,int len);//将char数组中索引值为offset长度为len的数据写出去

 

                           ④ void writer(String str);//写出一个字符串类型的数据

 

                            ⑤void writer(String str,int offset,int len);//将字符串中的数据从offset开始,长度为len的数据写出去

 

                            ⑥void flush();//把缓冲区中的数据写出去

 ⑦void  close();//关闭流,释放资源,在关闭流之前会把缓冲区的数据写出去

 

常用子类1:FileWriter:

 

        需要注意的是FileWriter在调用构造方法的时候,底层会创建一个长度是8192的byte数组(缓冲区),当缓冲区的数据存满了之后就会把缓冲区的数据写出去

 

构造方法:

 

       ① public  FileWriter(String pathname,boolean  append);//传入String类型参数,并判断是否覆盖原来数据,默认是不覆盖就是true,如果要覆盖就传入false

 

        ②public  FileWriter(File  Pathname,boolean  append);//传入File类型参数,并判断是否覆盖默认是不覆盖就是true,如果要覆盖就传入false

 

常用实现类2:BufferedWriter(字符缓冲输出流)

 

构造方法:

 

        ①public BufferedWriter(Writer w);//传入Writer类型对象

 

调用此方法时,底层会创建一个8192的char数组,当调用writer()写出方法时,会把数据写出到8192的char数组中,当char数组中存不下数据时,会将这些数据统一进行转换成byte数组,然后存入8192的byte数组中,然后再把byte数组中的数据写出去

 

        ②public BufferedWriter(Writer w,int size);//传入Writer类型的数据,并且可以指定缓冲区的大小

 

常用实现类3:字符转换输出流(OutputStreamWriter)

构造方法:

 

         ①public  OutputStreamWriter(OutputStream  os);//传入字节输出流类型参数,使用默认的字符编码写出数据

 

        ②public  OutputStreamWriter(OutputStream  os,String  charsetname);//使用自己指定的字符编码写出数据

 

4.字符输入流(Reader 抽象父类)

 

常用方法:①int  read();//读取一个字符的数据,如果没有读取到就返回-1

 

                   ②int  read(char []  ch);//读取数据存入char数据中,返回读取的长度,如果没有数据返回-1

 

                  ③void close();//释放资源

 

常用子类1:FileReader

构造方法:

 

需要注意的是我们在调用以下构造方法时,底层会创建一个长度为8192的byte类型数组,当数据量大的时候,每次会读取8192字节的数据,数据量小有多少读多少

 

        ①public FileReader(String pathname);//传入String类型参数

 

        ②public FileReader(File pathname);//传入File类型参数

常用子类2:字符缓冲输入流(BufferedrReader)

                构造方法:

和字符缓冲输出流的原理相似,在调用构造方法时,底层会创建一个长度为8192char数组,在读取数据时,会先把读取的数据存储到长度为8192的byte数组中,然后再把char数组中的数据全部转换成char类型,然后从char数组中对应的位置来获取元素进行操作

                ①public  BufferedReader(Reader  r);//传入字符输入流类型参数

                ②public  BufferedReader(Reader  r,int size);//传入字符输入流类型参数,并且指定缓冲区大小

                成员方法:String  readLine();//读取一行数据,没有则返回null

常用子类3:字符转换输入流(InputStream)

构造方法:①public InputStreamReader(InputStream is);//使用默认字符编码读取数据

 

                                  ②public InputStreamReader(InputStream is,String charsetName);//使用指定的字符编码读取数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值