1. File类,FilenameFilter接口:
Filer的 list()方法返回一个String[]数组.可以在list中加入FilenameFilter的接口实现.对文件过滤.其中需要覆盖一个boolean accept(File dir,String name)方法.dir为某个特定文件所在目录的File对象,name为文件名.
2. 输入和输出:任何继承了InputStream和Reader的类都有一个read()方法,任何继承OutputStream和Writer的类,都有一个write()方法。
InputStream的输入数据源有:字节数组、String对象、文件、“管道”、其它数据源(Internet)。其中每个数据源都有对应的InputStream的子类。(ByteArrayInputStream、StringBufferInputStream、FileInputStream、PipedInputStream、SequenceInputStream、FilterInputStream)
OutputStream为输出目标:字节数组(没有String,不过可以用字节数组生成)、文件或管道。分别对应OutputStream的子类:ByteArrayOutputStream、FileOutputStream、PipedOutputStream、FilterOutputStream。
修饰器:利用层叠的数个对象为单个对象动态地、透明地添加职责的方式,称作“修饰器”(Decorator)模式。要求:修饰器必须具有和它所修饰的对象相同的接口。
其中FilterInputStream为所有输入修饰器的其类,继承自InputStream。其子类有:DataInputStream、BufferedInputStream、LineNumberInputStream、PushbackInputStream。
FilterOutputStream为输出的基类。继承OutputStream,其子类有:DataOutputStream、PrintStream、BufferedOutputStream。
数据的来源和去处:
来源与去处:Java 1.0 | 相应的Java 1.1 |
InputStream | Reader 适配器:InputStreamReader |
OutputStream | Writer 适配器:OutputStreamWriter |
FileInputStream | FileReader |
FileOutputStream | FileWriter |
StringBufferInputStream | StringReader |
(无相关类) | StringWriter |
ByteArrayInputStream | CharArrayReader |
ByteArrayOutputStream | CharArrayWriter |
PipedInputStream | PipedReader |
PipedOutputStream | PipedWriter |
更改流的行为:
过滤器:Java 1.0 | 相应的Java 1.1 |
FilterInputStream | FilterReader |
FilterOutputStream | FilterWriter(抽象类,没有子类) |
BufferedInputStream | BufferedReader(也有readLine()) |
BufferedOutputStream | BufferedWriter |
DataInputStream | 使用DataInputStream(当需要使用readLine()时,应该使用BufferedReader) |
PrintStream | PrintWriter |
LineNumberInputStream(不赞成) | LineNumberReader |
StreamTokenizer | StreamTokenizer(使用接受Reader的构造器) |
PushbackInputStream | PushBackReader |
3. 自我独立的类:RandomAccessFile。实现了DataInput、DataOutput接口,其它和Stream无任何关系。在JDK 1.4中该类大部分功能由存储映射文件取代。
4. I/O流的典型使用方式:
Ø BufferedReader in=new BufferedReader(new FileReader(“文件名”));
Ø BufferedReader stdin=new BufferedReader (new InputStreamReader (System. in));
Ø StringReader in2=new StringReader(“字符串”);
Ø DataInputStream in3=new DataInputStream (new ByteArrayInputStream (byte []));
Ø PrintWriter out1=new PrintWriter(new BufferedWriter(new FileWriter(“文件名”)));
Ø DataOutputStream out2=new DataOutputStream(new BufferedOutputStream(new FileOutputStream(“文件名”)));
Ø DataInputStream in5=new DataInputStream(new BufferedInputStream(new FileInputStream(“文件名”)));
5. 几种输入流的结束方法:无修饰的read()结束标志-1、有修饰的 available()结束标志 0、readLine() 结束标志null。
6. System. out为PrintStream. PrintWriter有可能用PrintStream作为参数的构造函数。
7. 标准I/O重定向:System类提供的方法有:setIn(InputStream)、setOut(PrintStream)、setErr(PrintStream);
8. 新I/O:主要指JDK1.4引入的java.nio.*。这里有两个新概念:通道和缓冲器,我们一般只是和缓冲器打交道,直接和通道交互的缓冲器是ByteBuffer,其属于java.nio.*。另外有一个新的类:FileChannel。还要注意ByteBuffer的flip(),clear()方法。Flip主要用在读/写转换的时候。更有用处的FileChannel的两个方法:TransferFrom, transferTo.
ByteBuffer的几个获取基本数据类型的方法:asCharBuffer,asShortBuffer,asIntBuffer,asLongBuffer,asFloadBuffer,asDoubleBuffer.然后就可调用put方法向缓冲器中填入数据。读取时直接使用:getTypeName.