IO流

IO流

Input:输入流,用于读取数据

Output:输出流,用于写数据

IO分类

字节流

字节流就是读和取都是以字节【byte】为单位

InputStream【抽象类

FileInputStream【文件输入流】

案例:读取一个txt文件数据


IO流_第1张图片

BufferedInputStream【带缓冲区的输入流】

SequenceInputStream【系列流,可以把多个字节流封装到系列流,方便读】

ObjectInputStream【对象输入流,读取对象,读的对象必须实现Serializable系列化接口

DataInputStream【数据输出流,这个可以按int,long的字节数来读取】

OutputStream【抽象类】

FileOutputStream【文件输出流】

案例:往一个abc.txt文件写数据


IO流_第2张图片

BufferedOutputStream【带缓冲区的输出流】

ByteArrayOutputStream【字节数据输出流,这个不需要关联文件,不需要关流,这个类把数据写在内存,不是在写文件

ObjectOutputStream【对象输出流,写入对象到文件,写的对象必须实现Serializable系列化接口

DataOutputStream【数据输出流,这个可以按int,long的字节数来存储】

PrintStream【打印字节流,把数据打印在控制台console】【System.out,把字节转成字符串】

案例:拷贝图片和音频


IO流_第3张图片

字节数组拷贝之available()方法


IO流_第4张图片

案例:正确的拷贝文件的方法


IO流_第5张图片

练习:图片加密


IO流_第6张图片

练习:根据用户输入的文件拷贝文件到当前项目目录


IO流_第7张图片

练习:录入数据拷贝到文件


IO流_第8张图片

缓冲区:就是一个字节数组byte[]

为什么要定义一个字节数组的缓冲区?【原因:提高文件读和写的效率】

字符流

字符流就是读和取都以字符【char】为单位

字符流内部也是先读取字节把字节转成字符

Reader【字符输入流,抽象类】

FileReader【文件字符输入流】

案例:使用FileReader 读取一个文本数据


IO流_第9张图片

BufferedReader【带缓冲区的字符输入流】

LineNumberReader【可以获取行号,它是BufferedReader的子类】

InputStreamReader

Writer【字符输出流,抽象类】

FileWriter【文件字符输出流】

案例:使用FileWrite写入数据


IO流_第10张图片

BufferedWriter【带缓冲区的字符输出流】

PrintWriter【打印字符流】

案例:字符流的拷贝


IO流_第11张图片

自定义字符数组的拷贝


IO流_第12张图片

案例:将文本反转


IO流_第13张图片

练习:获取文本上字符出现的次数


IO流_第14张图片

递归


IO流_第15张图片

递归:文件目录


IO流_第16张图片

练习:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.jpg文件名


IO流_第17张图片

BufferedReader和BufferedWriter,内部都【字符缓冲区数组】char[] cf;

装饰设计模式

装饰模式的实现方式

1.装饰对象和真实对象有相同的接口。

2.装饰对象包含一个真实对象的引用(reference)

3.装饰对象的所有方法,内部实现都是通过真实对象的引用来调用,然后实现自己的功能


IO流_第18张图片

你可能感兴趣的:(IO流)