——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
-
字符流,专门处理字符数据,文本数据
|– Writer 字符输出流,从java程序写一个文件到目的地
|– FileWriter
|– 构造方法,传递字符串格式文件名
|– write(字符,字符串,数组)写出的方法
|– flush()刷新流冲的数据,只要用了刷新,数据必走目的地
|– close()关闭流资源,关闭之前刷新它
|– Reader 字符输入流,从一个数据源读取数据到java程序
|– FileReader
|– 构造方法,传递字符串格式文件名
|– read() 读取单个字符,返回int值
|– read(字符数组) 返回数组中有效字符个数
|– 读取到文件的结尾返回 -1
|– close()关闭流资源
-
字符流的缓冲对象
|– BufferedWriter 提高流的操作效率
|– 构造方法,传递一个字符输出流对象
|– 自己的方法 newLine()写一个换行,跨平台性
|– BufferedReader
|– 构造方法,传递一个字符输入流对象
|– 自己的方法 readLine()读取文本一行,返回字符串,没有换行符号,文件结尾返回null
-
复制文本文件案例 ,带异常处理
|– 第一个写一个,效率最低,不要求掌握
|– 第二个利用字符数作为缓冲,提供复制的效率,必须要会
|– 第三个利用字符流的缓冲区对象复制文件 ,必须要会,读一行,写一行
|– 字符流只能操作文本文件,记事本能开的,不是乱码的,不要通过后缀名判断
txt log ini java html htm shtml xml bat
4. 装饰设计模式
|– 重点理论要知道,知道装饰模式在IO体系的体现
为了进一步的深入了解I/O部分的装饰设计模式,引入javaWEB的经典案例,数据源的书写进行解释。
六、编写标准的数据库连接池
实现了javax.sql.DataSource的才是标准的数据库连接池,按照字面意思,一般称之为数据源。
对于一个已知类的某个方法进行功能上的改变有以下三种方式:
、定义子类,扩展父类的某个功能。(此处行不通)
、利用包装设计模式改写原有的类的功能
a、编写一个类实现与被改写类(com.mysql.jdbc.Connection)相同的接口
b、定义一个引用,记住被改写类的实例
c、定义构造方法,传入被改写类的实例
d、对于要改写的方法,改写即可
e、对于不需要改写的方法,调用原有的对象的对应方法
*****包装设计模式
*****默认适配器设计模式
、动态代理
*****基于接口的动态代理
java.lang.reflect.Proxy
static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)
作用:返回代理类的实例
参数:loader:类加载器,一般与被代理对象使用同一个
interfaces:被代理对象所实现的接口
h:怎么代理
Object invoke(Object proxy, Method method, Object[] args) :调用原有类的任何方法,都会经过此方法。
I/O流的体系继承关系
-
IO流是需要分类,分成两大类,按照操作文件类型
字节流 ,操作任意文件
字符流 ,操作文本文件
-
按照流向分
输出流 ,将数据写在文件上
输入流 ,从文件中读取数据
-
字符输出流的抽象基类
java.io.Writer
-
字符输入流的抽象基类
java.io.Reader
-
字节输出流的抽象基类
java.io.OutputStream
-
字节输入流的抽象基类
java.io.InputStream
IO流概述
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICN1kzN1QDNzEzMyYDM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
Reader读取文件原理
数组缓冲读取文件