JAVA中IO流

目录

1、IO流概述

2、字节流写数据

2.1、字节流写数据的三种方式

2.2、字节流缓冲流

 2.3、字节流和字节缓冲流小结

 3、编码表

 3.1 、字节流和字符流使用小结

 4、字符流

4.1 、字符流写数据

4.2、 flush和close方法

4.3、字符缓冲流

4.4 字符缓冲流特有功能

5、IO流总结


1、IO流概述

IO流:其中:I表示input,是数据从硬盘进内存的过程,称之为读。

                       O表示output,是数据从内存到硬盘的过程,称之为写。

IO的数据传输,可以看做是一种数据的流动,按照流动的方向,以内存作为参照物,进行读写操作。

简单来说:内存在读,内存在写

2、字节流写数据

步骤:1、创建字节流对象

                注意事项:如果文件不存在,就创建。如果文件存在就清空。

            2、写数据

                注意事项:写出的整数,实际写出的是整数在码表上对应的字母

             3、释放资源

                注意事项:每次使用流必须释放资源

2.1、字节流写数据的三种方式

方法名说明
void write(int b)一次写一个字节数据
void write(byte[] b)一次写一个字节数组数据
void write(byte[] b, int off, int len)一次写一个字节数组的部分数据

                        写完数据后,加换行符:

                                windows: \r\n

                                linux: \n

                                mac:\r

                        字节流写数据追加写入

                                 piblic FileOutStream(String name, boolean append),创建文件输出流以指定的名称写入文件。如果第二个参数为true,不会清空文件里面的内容。

2.2、字节流缓冲流

字节缓冲流

  • BufferOutputStream:字节缓冲输出流
  • BufferInputStream:字节缓冲输入流

构造方法:

  • 字节缓冲输出流:BufferOutputStream(OutputStream out)
  • 字节缓冲输入流:BufferInputStream(Input Stream in)

字节缓冲流仅仅提供缓冲区,而真正的读写数据还得依靠基本的字节流对象进行操作

        

 2.3、字节流和字节缓冲流小结

字节流:

        可以操作(拷贝)所有类型的文件

字节缓冲流:

        可以提高效率

        不能直接操作文件,需要传递字节流

拷贝文件的四种方式:

  •  字节流一次读写一个字节
  • 字节流一次读写一个字节数组
  • 字节缓冲流一次操作一个字节
  • 字节缓冲流一次操作一个字节数组

思考:既然字节流可以操作所有文件,那么为什么还要学习字符流?

  • 如果利用字节流,把文本文件中的中文,读取到内存中,有可能出现乱码
  • 如果利用字节流,把中文写到文本文件中,也有可能出现乱码

 3、编码表

Unicode码表:

        由国际组织ISO制定,是统一的万国码,计算机科学领域里的一项业界标准,容纳世界上大多国家的所有常见文字和符号

        但是因为表示的字符太多,所以Unicode码表中的数字不是直接以二进制的形式存储到计算机的。会先通过UTF-7,UTF-7.5,UTF-8,UTF-16,以及UTF-32进行编码,再存储到计算机,其中最为常见的就是UTF-8;

        注意:Unicode是万国码,以UTF-8编码后一个中文以三个字节的形式存储

 3.1 、字节流和字符流使用小结

  1. 想要进行拷贝,一律使用字节流或者字节缓冲流
  2. 想要把文本文件中的数据读到内存中,请使用字符输入流
  3. 想要把内存中的数据写到文本文件中,请使用字符输出流
  4. GBK码表一个中文两个字节,UTF-8编码格式一个中文三个字节

 4、字符流

字符流写数据的五种方式

方法名说明
void write(int c)写一个字符
void write(char[] cbuf)写出一个字符数组
void write(char[] cbuf, int off, int len)写出字符数组的一部分
void write(String str)写一个字符串
void write(String str, int off, int len)写一个字符串的一部分

4.1 、字符流写数据

步骤:1、创建字符流对象

                注意事项:如果文件不存在,就创建。但是要保证父级路径存在。

                                    如果文件存在就清空

            2、写数据

                注意事项:写出的int类型整数,实际写出的是整数在码表上对应的字母

                                    写出字符串数据,是把字符串本身原样写出

             3、释放资源

                注意事项:每次使用流必须释放资源

4.2、 flush和close方法

方法名说明
flush()刷新流,还可以继续写数据
close()关闭流,释放资源,但是再关闭之前会先刷新流,一旦关闭,就不能写数据

4.3、字符缓冲流

字符缓冲流:

  • BufferedWriter:可以将数据高效的写出
  • BufferedReader:可以将数据高效的读取到内存

构造方法:

  • BufferedWriter(Writer out)
  • BufferedReader(Reader in)

4.4 、字符缓冲流特有功能

BufferWriter:

  • void newLine():写一行行分隔符,行分割符字符串由系统属性定义

BufferedReader:

  • public String readline():读一行文字。结果包含行的内容的字符串,不包括任何行终止字符,如果流的结尾已经到达,则为NULL;

5、IO流总结

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值