关于流的分类,字节流中字节输入流、字节输出流、缓冲字节流,字符流中字符输入流、字符输出流、缓冲字符流的课程笔记

流的分类:

1.按照流向区分

a.字节输入流 InputStream:

File InputStream–read()

b.字节输出流OutputStream:

FileOutputStream–write()

2.按照数据单位区分

a.字节流

b.字符流

3.按照层次区分

a.底层流

b.高级流(缓冲流)

字节流:

作用: 做文件的复制

子类:

1.字节输入流 InputStream:

File InputStream

(1).构造方法:
new FileInputStream(File)
new FileInputStream(“相对路径”)

(2)常用API:
int read() -> 读一个字节
注意:
a.读一个字节= 8位,读的是低8位,其他24位全补0,所以永远是正数
b.读到末尾返回-1
int read(byte[]) -> 读字节数组

2.字节输出流OutputStream:

FileOutputStream–write()
(1).构造方法:
new FileOutputStream(File)
new FileOutputStream(File,true) ->询问是否在原文件上进行追加内容

​ new FileOutputStream(“相对路径”)
​ new FileOutputStream(“相对路径”,true)

(2).常用API:
void write(int i) -> 写入一个字节(写入低8位)

​ void write(byte[] bs) -> 写一个字节数组

​ void write(byte[], int off, int len) -> 写入一个字节数组,从字节数组的第几位下标开始,写入长度为多少

3.缓冲字节流(高级流):
作用: 提高效率
子类/实现类:
1.缓冲字节输入流:BufferedInputStream
1).创建:
new BufferedInputStream(底层流)

2.缓冲字节输出流:BufferedOutputStream
1).创建:
new :BufferedOutputStream(底层流)
2)常用API:
void flush() - 手动刷新缓冲区

字符流

字符流:Reader/Writer
1.作用: 做文件的读写
2.子类/实现类:
a.字符输入流:InputStreamReader()
(1)创建:
a.InputStreamReader(底层流) - 默认字符集
底层流:可以决定文件是否进行追加
b.InputStreamReader(底层流,字符集) - 指定字符集
字符集:
UFT-8 1字符 = 3字节
GBK 1字符 = 2字节

​ (2)常用API
​ int read() - 读取单个字符。
​ 注意: 读到末尾返回-1

​ b.字符输出流:OutputStreamWriter
​ (1)创建:
​ OutputStreamWriter(底层流) - 默认字符集
​ OutputStreamWriter(底层流,字符集) - 指定字符集

​ (2)常用API:
​ void flush() 刷新该流的缓冲。
​ void write(char[] cbuf, int off, int len) - 写入字符数组的某一部分。
​ void write(int c) -写入单个字符。
​ void write(String str, int off, int len) - 写入字符串的某一部分。

c.缓冲字符流(高级流/包装流):
1.缓冲字符输入流:BufferedReader
1)创建:
BufferedReader(底层字符流)
2)常用API:
String readLine() - 读一整行
主要:注意返回null,标记读到末尾

2.缓冲字符输出流:PrintWriter
1)创建:
PrintWriter(OutputStream out, boolean autoFlush)
作用:
a.OutputStream,字节输出流,可以指定是否进行追加
b.是否刷新缓冲区
PrintWriter(fileName, 字符集) -指定字符集
作用:
a.可以指定字符集
PrintWriter(Writer, boolean autoFlush)
作用:
a.Writer需要使用底层字符流进行构建
底层字符流可以指定字符集
b.底层字符流使用底层字节流进行构建
底层字节流可以指定是否进行追加
c.是否进行自动刷新缓冲区

​ 2)常用API:
​ void print() - 写出内容,打印不换行
​ 注意: 使用print()结束,必须手动调用刷新缓冲区
​ pw.flush()
​ void println() - 写出内容,打印并且换行
​ 注意: 要设置了自动刷新缓冲区,只要遇到println()才会进行自动刷新

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值