目录:
Java编程思想(一)第1~13、16章
Java编程思想(二)第14章-类型信息
Java编程思想(三)第15章-泛型
Java编程思想(四)第17章-容器深入研究
Java编程思想(五)第18章-Java IO系统
Java编程思想(六)第19章-枚举类型
Java编程思想(七)第20章-注解
Java编程思想(八)第21章-并发
1 File类
File
(文件)类这个名字有一定的误导性;我们可能会认为它指代的是文件,实际上却并非如此。它既能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称。实际上,FilePath
(文件路径)对这个类来说是更好的名字。
如果它指的是一个文件集,我们就可以对此集合调用list()
方法,这个方法会返回一个字符串数组。
2 输入和输出(Input an output)
编程语言的I/O类库常使用流这个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收对象。“流”屏蔽了实际的I/O设备中处理数据的细节。
我们很少使用单一的类来创建流对象,而是通过叠合多个对象来提供所期望的功能(这是装饰器设计模式)。实际上,Java中的“流”类库让人迷惑的主要原因就在于:创建单一的结果流,却需要创建多个对象。
在Java 1.0中,类库的设计者首先限定与输入有关的所有类都应该从InputStream
继承,而与输出有关的所有类都应该从OutputStream
继承。
InputStream或Reader中的read()用于读取单个字节或者字节数组,OutputStream或Writer用于写单个字节或者字节数组。
2.1 InputStream类型
InputStream
的作用是用来表示那些从不同数据源产生输入数据的类。每一种数据源都有相应的InputStream子类。这些数据源包括:
- 字节数组。An array of bbytes.
- String对象。A String object.
- 文件。A file.
- “管道”(A pipe),工作方式与实际管道相似,即,从一端输入,从另一端输出。
- 一个由其他种类的流组成的序列,以便我们可以将它们收集合并到一个流内。A sequence of other streams.
- 其他数据源,如Internet连接等。Other sources.
2.2 OutputStream类型
OutputStream
类决定了输出所要去往的目标:
- 字节数组
- 文件
- 管道
3 添加属性和有用接口
FilterInputStream
和 FilterOutputStream
是用来提供装饰器类接口以控制特定输入流(InputStream)和输出流(OutputStream)的两个类,它们的名字并不直观。这两个类是装饰器的必要