一. 流与相关类
1. 流
- 使用多个流类型(类或抽象类)来实现输入/输出的功能
- 隐藏实际IO设备处理数据的细节
- 分类:
- 按功能分:节点流、处理流
- 按流向分:输入流、输出流
- 按处理单位分:字节流、字符流
按流向/处理单位分 | 字节流 | 字符流 |
---|---|---|
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
2. 字节流
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1j6yTSJi-1597502827148)(upload\image-20200730215010043.png)]
- InputStream节点流类型
| 类 | 功能 |
| :---------------------: | :-------------------------------------------------------: |
| ByteArrayInputStream | 允许将内存的缓冲区当作InputStream使用 |
| StringBufferInputStream | 将string转换成InputStream |
| FileInputStream | 用于从文件中读取信息 |
| PipedInputStream | 产生用于写入相关PipedOutputStream的数据,实现“管道化”概念 | - InputStream处理流类型
类 | 功能 |
---|---|
DataInputStream | 与DataOutputStream搭配使用,可参照可移植方式从流读取基本数据类型 |
BufferedInputStream | 使用它可以防止每次读取时都得进行实际的读操作 |
LineNumberInputStream | 跟踪输入流中的行号;可调用getLineNumber()和setLineNumber() |
PushbackInputStream | 具有一个字节的回退缓冲区,可以将读到的最后一个字符回退 |
SequenceInputStream | 将两个或多个InputStream对象转化为单一的InputStream |
ObjectInputStream | 使任意一个对象能够像数据流一样进行输入 |
InputStream 的方法(throws IOException):
int read()
int read(byte[] buffer)
int read(byte[] buffer, int offset, int length)
void close()
long skip(long n)
OutputStream 的方法(throws IOException):
void write(int b)
void write(byte[] b)
void write(byte[] b, int off, int len)
void close()
void flush()
3. 字符流
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5DBbvpbj-1597502827150)(upload\image-20200730222818612.png)]
Reader 的方法(throws IOException):
int read()
int read(byte[] buffer)
int read(byte[] buffer, int offset, int length)
void close()
long skip(long n)
Writer 的方法(throws IOException):
void write(int c)
void write(char[] cbuff)
void write(char[] cbuff, int offset, int length)
void write(String string)
void write(String string, int offset, int length)
void close()
void flush()
二. 标准I/O流
1. 三个标准I/O流
- System.in:InputStream类的对象实例in作为标准输入流对象,对应于键盘输入
- System.out:PrintStream类的对象实例out作为标准输出流对象,对应于显示器输出
- System.err:PrintStream类的对象实例err作为标准错误输出流对象,对应于显示器输出
重新定义标准I/O流:
void setIn(InputStream in)
void setOut(OutputStream out)
void setRrr(OutputStream err)
2. java.util.Scanner类
- 用于扫描输入文本的类,StringTokenizer与Matcher类的结合
构造方法:
Scanner(File source) //从文件中接受内容
Scanner(InputStream sourcce) //从指定的字节输入流中接受内容
hasNextInt() //判断输入数据是否是整数
hasNextFloat() //判断输入数据是否是浮点数
hasNext(Pattern pattern) //判断输入数据是否符合指定的正则标准
next() //接受内容
next(Pattern pattern) //接受内容,并进行正则验证
nextInt() //接受整数
nextFloat() //接受浮点数
Scanner useDelimiter(String pattern) //设置读取的分隔符
三. 文件输入输出流
1. File类
- java.io.File
2. 基于字节的文件流
- FileInputStream
- FileOutputStream
3. 基于字符的文件流
- FileReader
- FileWriter