Java中的流操作

1. 字符流
1.1字符输入流 - Reader - FileReader
涉及到连接的,用完了就要关闭。
 
**为什么read方法  返回的值是 int,而不是char?因为读到结尾的时候,char不好使,结尾 int 就为 -1。
 
案例:编写一个字符输入流,来读取外部文件中的数据
根据数据流动的方向 - 输入流
根据操作的数据类型 - 字符流
字符输入流 - Reader(FileReader  前面是来的源,后面是操作)
 
1.2 字符输出流 - Writer - FileWriter
 
案例:编写一个流  来将指定的字符写出到外部文件中
 
1.3 关流的过程
        IO流用过之后必须保证关闭,但是 IO 流的代码中往往存在大量的异常,为了保证关流的操作一定会被执行,所以通过关流都在 finally 代码块中进行。而为了保证 finally 中可以看到流对象,通常
 
案例:编写一个程序,实现文件的拷贝
所谓的文件拷贝,实际上就是
 
1.4 使用缓冲区来提升程序的性能
 
1.5 使用缓冲流提升程序的性能
        功能:
               自带缓冲区  提升程序性能
               提供一些新方法,方便操作
        BufferedReader
 
        BufferedWriter
 
1.6 增强类的方式
a. 继承
    可以通过继承父类,在子类中增强能力,缺点是对父类对象无效。
b.装饰设计模式
    可以对已有对象生效
c.动态代理
 
1.7 装饰设计模式
    java中共有 23 种设计模式。装饰模式是其中的一种。所谓的设计模式,其实就是前人总结的写代码的套路。(动态代理,适配器)
    主要的功能:就是在原有的被装饰者的基础上增加其他能力。
    实现方式:
 
案例:为 Person 类通过装饰设计模式 使其能够飞
 
缓冲流 - BufferedReader 和 BufferedWriter 就是使用了装饰设计模式实现的。
实验:翻阅BufferedReader  BufferedWriter 的源代码。
 
1.8 字符流 - 其他字符流
    StringReader
        数据来源是字符串的字符流
案例:利用StringWriter以一段
 
字节流 - 字节输入流
    InputStream
 
字节流 - 字节输出流
    OutputStream
 
案例:通过字节流,直接实现文件的复制
 
2. 转换流
    字符流的底层也是字节流,只不过在字节流的基础上增加了缓冲区和编解码器。
    字符流内置的但是 java 提供的字符流  缓冲区和编解码器是无法调整的,这在使用
 
案例:拷贝一个 utf-8 编码集  包含中文的文本文件  要求产生的文件也是 utf-8/gbk。
 
3. 系统流
在java中有一个重要的类,叫做System,代表当前系统,
 
通过系统流向控制台写数据
 
系统输出流
 
修改标准系统输出流输出位置
 
系统输入流
 
修改标准系统输入流输入位置
 
打印流  系列化流
posted @ 2018-08-24 20:36  唐雕  阅读(589)  评论(0编辑  收藏  举报