从零开始的Java笔记06 - IO流

I/O流

比较重要的IO流就在这了。除了序列化的I/O流(Object开头的)
在这里插入图片描述

字节流

主要对于字节的操作,比较适合文本以外的文件的读写,如图片、视频、音乐等。

InputStream

方法方法介绍
public abstract int read()读取数据
public int read(byte b[])将读取到的数据放在 byte 数组中,该方法实际上是根据下面的方法实现的,off 为 0,len 为数组的长度
public int read(byte b[], int off, int len)从第 off 位置读取 len 长度字节的数据放到 byte 数组中,流是以 -1 来判断是否读取结束的
public void close()读取完,关闭流,释放资源
public long skip(long n)跳过指定个数的字节不读取,想想看电影跳过片头片尾
public int available()返回可读的字节数量
public synchronized void mark(int readlimit)标记读取位置,下次还可以从这里开始读取,使用前要看当前流是否支持,可以使用 markSupport() 方法判断
public synchronized void reset()重置读取位置为上次 mark 标记的位置
public boolean markSupported()判断当前流是否支持标记流,和上面两个方法配套使用

注意,先定义一个byte[1024]再使用read(byte[])也属于一种缓冲,相当于先一次性读取1024字节的数据后打包,可以有效提高效率。

OutputStream

方法方法介绍
public abstract void write(int b)写入一个字节,可以看到这里的参数是一个 int 类型,对应上面的读方法,int 类型的 32 位,只有低 8 位才写入,高 24 位将舍弃。
public void write(byte b[])将数组中的所有字节写入,和上面对应的 read() 方法类似,实际调用的也是下面的方法。
public void write(byte b[], int off, int len)将 byte 数组从 off 位置开始,len 长度的字节写入
public void flush()强制刷新,将缓冲中的数据写入
public void close()关闭输出流,流被关闭后就不能再输出数据了

FileInputStream

适用于读文件的输入流。

FileOutputStream

输出文件/写文件的类。
构造方法:

  • FileOutputStream (File file) 对于某个指定文件的写方法,像是只能在某个本子上写字的笔
  • FileOutputStream (String fileName)这个文件可以直接用文件名等效代替
  • FileOutputStream (File/String xx , boolean append)append的翻译是“追加,增加”,因此append为true时,写方法会在文件末尾写,相反,会从文件开头进行覆盖。

BufferedInputStream

使用Buffer(缓冲)相当于将IO流中的数据打包再传输,可以提高读写的效率。
常用方法同InputStream。

BufferedOutputStream

常用方法同OutputStream。


字符流

字符流:主要对字符进行操作,比较适用于文本的读写。

Reader

方法方法介绍
public int read(java.nio.CharBuffer target)读取字节到字符缓存中
public int read()读取单个字符
public int read(char cbuf[])读取字符到指定的 char 数组中
abstract public int read(char cbuf[], int off, int len)从 off 位置读取 len 长度的字符到 char 数组中
public long skip(long n)跳过指定长度的字符数量
public boolean ready()和上面的 available() 方法类似
public boolean markSupported()判断当前流是否支持标记流
public void mark(int readAheadLimit)标记读取位置,下次还可以从这里开始读取,使用前要看当前流是否支持,可以使用 markSupport() 方法判断
public void reset()重置读取位置为上次 mark 标记的位置
abstract public void close()关闭流释放相关资源

Writer

方法方法介绍
public void write(int c)写入一个字符
public void write(char cbuf[])写入一个字符数组
abstract public void write(char cbuf[], int off, int len)从字符数组的 off 位置写入 len 数量的字符
public void write(String str)写入一个字符串
public void write(String str, int off, int len)从字符串的 off 位置写入 len 数量的字符
public Writer append(CharSequence csq)追加吸入一个字符序列
public Writer append(CharSequence csq, int start, int end)追加写入一个字符序列的一部分,从 start 位置开始,end 位置结束
public Writer append(char c)追加写入一个 16 位的字符
abstract public void flush()强制刷新,将缓冲中的数据写入
abstract public void close()关闭输出流,流被关闭后就不能再输出数据了

InputStreamReader

是Reader的子类,可以将字节流的I/O流通过字符集转换为字符流的形式,相当于是把字节流转变成字符流的桥梁

构造方法:
public InputStreamReader (InputStream 类实例,*可选*String charsetName字符集名称),通过指定字符集将字节流转换成字符流处理。不指定则使用默认字符集。
特有方法:
public String getEncoding() 返回此流使用的字符编码名。
public boolean ready() 告知是够准备读取此流。

OutputStreamWriter

类似上一个方法。
构造方法:
public OutputStreamWriter (OutputStream 类实例,*可选*String charsetName字符集名称),通过指定字符集将字节流转换成字符流处理。不指定则使用默认字符集。


FileReader

是Reader的子类,主要方法同Reader。

FileWriter

是Writer的子类,主要方法同Writer。


BufferedReader

构造方法描述
BufferedReader(Reader in)创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz)创建一个使用指定大小输入缓冲区的缓冲字符输入流。

主要方法:较Reader方法,多了一个特有方法:String readLine()
这个方法一次可以读取一个文本行,返回的直接就是这一行的字符串,如果读到行尾了就返回null。
reader.readLine()方法返回的一行字符中不包含换行符,所以输出的时候要自己加上换行符。

BufferedReader比FileReader高级的地方在于FileReader能一次读取一个字符,或者一个字符数组。而BufferedReader也可以,同时BufferedReader还能一次读取一行字符串。同时,BufferedReader带缓冲,会比FileReader快很多。

但是FileReader使用项目的编码来读取解析字符,不能指定编码,可能会出现编码问题,但是InputStreamReader可以指定编码,通过使用包装InputStreamReader的BufferedReader,可以兼顾效率和编码。

BufferedWriter

构造方法和BufferedReader类似,都是包装一个父类,包括WriterOutputStreamWriter.

构造方法描述
BufferedWriter(Writer out)创建一个缓冲字符输出流,使用默认大小的输出缓冲区
BufferedWriter(Writer out, int sz)创建一个缓冲字符输出流,使用给定大小的输出缓冲区

特有方法:相较Writer而言,多了一个特有方法:void newLine() 写入一个行分隔符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值