1、IO流概述
(1)用来处理设备(硬盘,控制台,内存)间的数据。
(2)java中对数据的操作都是通过流的方式。
(3)java用于操作流的类都在io包中。
(4)按照流操作的数据的类型不同:分为字节流和字符流。字符流是为了方便中文的操作而来的。
(5)按照流的流向不同分为:输入流,输出流
2、IO流常用基类:
(1)字节流
输出字节流:OutputStream:字节写入流抽象类
|--->FileOutputStream:字节写入流|--->BufferedOutputStream:
字节写入流缓冲区|--->PrintStream:
打印流输入字节流:InputStream:字节读取流抽象类
|--->FileInputStream:字节读取流
|--->BufferedInputStream:字节读取流缓冲区
(2)字符流
输出字符流:Writer:字符写入流的抽象|--->FileWriter:字符写入流
|--->BufferedWriter:字符写入流缓冲区
|--->OutputStreamWriter:字符通向字节的转换流(涉及键盘录入时用)
|--->OutputStreamWriter:打印流,可处理各种类型的数据
输入字符流:Reader: 字符读取流的抽象类
|--->FileReader:字符读取流|--->LineNumberReader:
跟踪行号的缓冲字符读取流|--->BufferedReader:字符读取流缓冲区
|--->InputStreamReader:字节通向字符的转换流(涉及键盘录入时用)
(3)IO流常用基类方法摘要:
字节写入流:OutputStream:void close() 关闭此输出流并释放与此流有关的所有系统资源。
void flush()刷新此输出流并强制写出所有缓冲的输出字节。
abstract void write(int b) 将指定的字节写入此输出流。
void write(byte[] b) 将 b.length 个字节从指定的 byte 数组写入此输出流。
void write(byte[] b, int off, int len)
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
字节读取流:InputStream:
void close() 关闭此输入流并释放与该流关联的所有系统资源。
int available() (特有方法!!)
返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。
abstract int read() 从输入流中读取数据的下一个字节。
int read(byte[] b) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
int read(byte[] b, int off, int len) 将输入流中最多 len 个数据字节读入 byte 数组。
long skip(long n) 跳过和丢弃此输入流中数据的 n 个字节。
字符写入流:Writer:abstract void close() 关闭此流,但要先刷新它。
abstract void flush() 刷新该流的缓冲。
void write(int c) 写入单个字符。
void write(char[] cbuf) 写入字符数组。
abstract void write(char[] cbuf, int off, int len) 写入字符数组的某一部分。
void write(String str) 写入字符串。
void write(String str, int off, int len) 写入字符串的某一部分。
字符读取流:Reader:abstract void close() 关闭该流并释放与之关联的所有资源。
int read() 读取单个字符。
int read(char[] cbuf) 将字符读入数组
abstract int read(char[] cbuf, int off, int len) 将字符读入数组的某一部分。
long skip(long n) 跳过字符。
3、IO流常用字节流基类的子类:
写入流:
(1)FileOutputStream:
构造方法:
FileOutputStream(String name)
创建一个向具有指定名称的文件中写入数据的输出文件流。
FileOutputStream(String name, boolean append)
创建一个向具有指定 name 的文件中写入数据的输出文件流。
FileOutputStream(File file)
创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream(File file, boolean append)
创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
方法摘要:
public void flush()
void close() 关闭此文件输出流并释放与此流有关的所有系统资源。
void write(int b) 将指定字节写入此文件输出流。
void write(byte[] b, int off, int len)
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。
void write(int b) 将指定字节写入此文件输出流。
(2)BufferedOutputStream:
构造方法:BufferedOutputStream(OutputStream out)
创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
BufferedOutputStream(OutputStream out, int size)
创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。
方法摘要:
void flush() 刷新此缓冲的输出流。
void write(byte[] b, int off, int len)
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此缓冲的输出流。 void write(int b) 将指定的字节写入此缓冲的输出流。
(3)PrintStream:打印流,可将各种类型的数据原样打印,有自动刷新功能
构造方法:
PrintStream(String fileName)创建具有指定文件名称且不带自动行刷新的新打印流。
PrintStream(File file) 创建具有指定文件且不带自动行刷新的新打印流。PrintStream(OutputStream out)
创建新的打印流。
PrintStream(OutputStream out, boolean autoFlush) (当autoFlush为true时具有自动刷新功能)创建新的打印流。
方法摘要: PrintStream append(char c) 将指定字符添加到此输出流。void close()
关闭流。 void flush() 刷新该流的缓冲。 void print(各种类型的数据:) 打印各种类型的数据 void println(各种类型的数据:):自动换行 打印各种类型的数据 void write(byte[] buf, int off, int len) 将 len 字节从指定的初始偏移量为 off 的 byte 数组写入此流。 void write(int b) 将指定的字节写入此流。
读取流:(1)FileInputStream:
构造方法: FileInputStream(String name) 通过打开一个到实际文件的连接来创建一个 FileInputStream, 该文件通过文件系统中的路径名 name 指定。 FileInputStream(File file) 通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
方法摘要: int available() (字节读取流特有方法!!!) 返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。 int read() 从此输入流中读取一个数据字节。 int read(byte[] b) 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。 int read(byte[] b, int off, int len) 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。 long skip(long n)从输入流中跳过并丢弃 n 个字节的数据。
(2)BufferedInputStream:
构造方法: BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。 BufferedInputStream(InputStream in, int size)创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
方法摘要: int available() (字节读取流特有方法!!!) 返回可以从此输入流读取(或跳过)、且不受此输入流接下来的方法调用阻塞的估计字节数。 int read() 参见 InputStream 的 read 方法的常规协定。 int read(byte[] b, int off, int len) 从此字节输入流中给定偏移量处开始将各字节读取到指定的 byte 数组中。 long skip(long n)参见 InputStream 的 skip 方法的常规协定。
大家如果觉得我写的文章还行的话,可以关注我的微信公众号:猿blog(扫描二维码可关注)

195

被折叠的 条评论
为什么被折叠?



