IO流的输入输出(常用)

Input/Output 读取/写入

1、字节流

  1. InputSreeam 抽象类,表示字节输入流的超类(父亲)/OuputStream 抽象类,表示字节输出流的超类(父亲)
  2. FileOutputStream (String name) :创建文件输出流以制定的名称写入文件(三种方法)
  • void write(int b)
  • void write(byte[] b)
  • void write(byte[] b,int off,int len)

!注意三个小问题

  • 实现换行:windows: \r\n linux: \n mac:\r
  • 实现追加:在创建输出流文件的第二个参数设置为true
  • 写入结束的时候:注意关闭资源 close();
  1. FileInputStream(String name): 通过打开与实际文件的连接来创建一个输入流的对象
    字节流读数据:
  • public int read() 一次读取一个字节,当没有内容读取的时候,返回-1;
  • public int read(byte[]) 一次读取一个字节数组,返回读取的内容数量,同样没有内容读取的时候返回-1;
  1. 字节缓冲流 优点:创造缓冲对象,不必每次都调用底层系统,节省输入和输出的时间
  • BufferedOutputStream(OutputStream out)
  • BufferedInputStream(InputStream out)
    其中输出和输出的方法和上面的一致,不过构造方法则需要传入相应的对象。

2、字符流

  1. 为什么会出现字符流? 因为字节流操作中文不是很方便
    字符流=字节流+编码表
  2. 常用的字符集(编码的参照)
    GBK:一个中文占两个字节
    UTF-8: 一个中文占三个字节
  3. InputStreamReader :从字节流到字符流的桥梁,读取字节,并采用相应的编码解码为字符(Reader 是其超类的抽象类)
  4. OutputStreamWriter :从字符流到字节流的桥梁,读取字符,并采用相应的编码将其编码为字节(Writer 是其超类的抽象类)
  5. 字符流写入数据的物种方法
  • 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)
  • flush() 刷新
  • close() 关闭
  1. 字符流读取数据的2中方法
  • int read() 一次读取一个字符
  • int read(char[] cbuf) 一次读取一个字符数组
  1. 字符输入和输出流的便捷对象
    因为之前的名称比较长,我们这里可以采用两种比较短的名称对象:FileReader() 和 FileWriter() ,其中构造函数可以直接用文件的路径

  2. 字符缓冲流

  • BufferedWriter(Writer out) 字符缓冲输出流对象
  • BufferedReader(Reader in) 字符缓冲输入流对象
    输出和输出的方法与之前的较为一致
    !不过有其特有的功能
  • 读取的特有功能 String readLine() 一次读取一行内容,但是不会读取换行等终止符
  • 写入的特有功能 void newLine() 写一行行分隔符(换行)
  • 写入的时候,也要注意 刷新(flush()) 及时更新写入的内容。
  • 最后同样注意都要关闭释放资源。

3、总结

最后用两张图来总结:
在这里插入图片描述
小结:字节流可以复制任意文件数据,有4种方式,一般采用字节缓冲流一次读写一个字节数组的方法
在这里插入图片描述
小结:字符流只能复制文本数据,有5种方式,一般采用字符缓冲流的特有功能(一次读写一行字符)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肖大仙~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值