字节流inputStream outStream
字符流 reader writer 针对Java语言而言 换算与截取
对象流
内存存东西以字节为单位 java处理字符串以字符单位 一个字符等于两个字节
read() 返回一个整数 占4个字节 读入的字节占第一位字节 后面3个字节为数字0
当读取到达流的末尾,则返回 -1。后面3个字节为数字为-1
字节流属于低层次的流
如果因为流位于文件末尾而没有可用的字节,则返回值 -1;否则,至少读取一个字节并将其存储在 b 中
字符流 一次性读取一个字符
缓冲区的概念 提高效率 硬盘内存的差异 内存 半导体 总线数
批量操作 时间与单个字节保存硬盘的时间一样
缓冲区可以大大文件输出输入的效率
自己能提供数据来源叫源流
加工流 过滤流 自己不提供数据来源 提取别的流进行加工 增加操作数据的方法
流类的比较 流暗藏一个指针
| 字节流 | 字符流 | |
输入流 | InputStream | Reader | |
方法 | int read()字节1/4 | int read()字符2/4 | |
| int read(byte[] b) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 | int read(char[] b)
将字符读入数组。 | |
| read(byte[] b, int off, int len) | read(byte[] b, int off, int len) b - 读入数据的缓冲区。 off - 数组 b 中将写入数据的初始偏移量。 len - 要读取的最大字节数。
| |
| Long skip(long n) | Long skip(long n) | |
| Void close() | Void close() | |
源流类
| File Piped InputSteam Bytearray Stringbuffer 来自系统 | File Piped Reader Chararray Stringbuffer | |
过滤流 | BufferedInputStream PushbackInputStream(uread) DataInputStream ObjectInputStream | BufferedReader PushbackReader(uread) | |
输出流 | OutputStream | Writer | |
源流类 | File Piped OutputSteam Bytearray Stringbuffer | File Piped Writer Chararray Stringbuffer | |
过滤流 | BufferedOutputSteam PushbackOutputSteam (uread) DataOutputSteam ObjectOutputSteam | BufferedWriter(newLine) 二进制文件 换行 PushbackWriter (uread) | |
| void close() | void close() | |
| void flash() 强写刷新该流的缓冲。如果该流已保存缓冲区中各种 write() 方法的所有字符,则立即将它们写入预期目标。然后,如果该目标是另一个字符或字节流,则将其刷新。因此,一次 flush() 调用将刷新 Writer 和 OutputStream 链中的所有缓冲区 | void flash() | |
方法 | void write(int) void write(byte[]) void write(byte[] b, int off, int len) | void write(int) void write(char[] b, int off, int len) void write(char[]) void write(String str,int a,int b)
|
混合编码
管道资源占用系统资源
File 用来对文件和目录进行操作