I/O 流

I/O 流
File 对象封装了文件的或路径的属性,但是它不包括创建文件,也不包括向文件读写的方法,为了I/O操作,需要使用恰当的 Java I/O类创建对象,这些对象包含从文件读写的方法。
按照数据流向
输入流:从外界(键盘、网络、文件…)读取数据到内存
输出流:用于将程序中的数据写出到外界(显示器、文件…)
数据源 目的地 交通工具 c->文件A --> d->文件A 输入流 输出流

按照数据类型
字节流:主要用来处理字节或二进制对象。
字节输入流(InputStream)
字节输出流 (OutputStream)
字符流:主要用来处理字符、字符数组或字符串。
字符输入流(Reader)
字符输出流(Writer)

字节流和字符流的区别:
读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字 节。
处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。
文本文件: txt json html css js .xml
选取:只要是处理纯文本数据,就优先考虑使用字符流,除此之外都使用字节流。

字节流
OutputStream(抽象类)
FileOutputStream
FileOutputStream的构造方法
FileOutputStream(String name) 创建一个向name文件中写数据的输出文件流
FileOutputStream(File file) 创建一个向file文件中写数据的输出文件流
FileOutputStream(File file, boolean append) 创建一个向file文件中追加数据的输出文件流

FileOutputStream的成员方法
public void write(int b) 写一个字节
public void write(byte[] b) 写一个字节数组
public void write(byte[] b,int off,int len) 写一个字节数组的一部分
void close() 关闭此文件输出流并释放与此流有关的所有系统资源

InputStream
FileInputStream
FileInputStream的构造方法
FileInputStream(File file) 创建一个从file读取数据的输入流
FileInputStream(String name) 创建一个从name文件读取数据的输入流

FileInputStream的成员方法
int read() 一次读取一个字节
int read(byte[] b) 一次读取一个字节数组
int read(byte[] b, int off, int len) 一次读取一个字节数组的一部分
void close() 关闭此文件输入流并释放与此流有关的所有系统资源

字节缓冲输出流
BufferedOutputStream

字节缓冲输入流
BufferedInputStream

字符流
Writer(抽象类,不能直接使用,选择子类)
OutputStreamWriter(转换流,是字符流通向字节流的桥梁,可使用指定的 charset 将要写入流中的字符编码成 字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认字符集编码。)

OutputStreamWriter的构造方法
OutputStreamWriter(OutputStream out) 创建使用默认字符编码的字符输出转换流
OutputStreamWriter(OutputStream out, Charset cs) 创建使用cs字符集的字符输出转换流
OutputStreamWriter(OutputStream out, CharsetEncoder enc) 创建使用enc字符集编码器的
OutputStreamWriter(OutputStream out, String charsetName) 创建使用指定字符集的

OutputStreamWriter的成员方法
public void write(int c) 写一个字符
public void write(char[] cbuf) 写一个字符数组
public void write(char[] cbuf,int off,int len) 写一个字符数组的一部分
public void write(String str) 写一个字符串
public void write(String str,int off,int len) 写一个字符串的一部分
void close() 关闭流对象
void flush() 清空缓存
注意:使用字符流的时候记得最后调用flush()方法,刷新字符流的缓冲。

InputStreamWriter读数据方法
public int read()
public int read(char[] cbuf)

FileReader和FileWriter
FileWriter:用来写入字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受 的。要自己指定这些值,可以先在 FileOutputStream 上构造一个OutputStreamWriter。
FileReader:用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。 要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader。
构造方法类似 FileInputStream和FileOutputStream
成员方法完全继承自父类 OutputStreamWriter和InputStreamReader

字符缓冲流(高效缓冲流)
BufferedWriter和BufferedReader
继承自Writer和Reader,所以具备原有的读取方法,但是还存在自己特有的方法。
特有的方法:
BufferedWriter:void newLine() 换一行
BufferedReader:String readLine() 读一行

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值