17.2.3 listFiles()方法
Java 2增加了list( )方法的一个变化形式,名为listFiles( ),你会发现该方法很有用。listFiles( )形式如下:
File[ ] listFiles( )
File[ ] listFiles(FilenameFilter FFObj)
File[ ] listFiles(FileFilter FObj)
上述三种形式以File对象矩阵的形式返回文件列表,而不是用字符串形式返回。第一种形式返回所有的文件,第二种形式返回满足指定FilenameFilter接口的文件。除了返回一个File 对象数组,这两个listFiles( )方法就像list( )方法一样工作。第三种listFiles( )形式返回满足指定FileFilter的路径名的文件。FileFilter只定义了一个accept( )方法,该方法被列表中的每个文件调用一次。它的通常形式如下:
boolean accept(File path)
如果文件被包括在列表中(即与path参数匹配的文件),accept( )方法返回true,如果不被包括,则返回false。
17.2.4 创建目录
另外两个有用的File类的方法是mkdir( )和mkdirs( )。mkdir( )方法创建了一个目录,创建成功返回true,创建失败返回false。创建失败是指File对象指定的目录已经存在,或者是因为整个路径不存在而不能创建目录。创建路径不存在的目录,用mkdirs( )的方法。它创建目录以及该目录所有的父目录。
17.3 流 类
Java 的流式输入/输出建立在四个抽象类的基础上:InputStream, OutputStream, Reader和Writer。这些类在第12章中有过简要的讨论。它们用来创建具体流式子类。尽管程序通过具体子类执行输入/输出操作,顶层的类定义了所有流类的基础通用功能。InputStream 和OutputStream 设计成字节流类。Reader 和Writer 为字符流设计。字节流类和字符流类形成分离的层次结构。一般说来,处理字符或字符串时应使用字符流类,处理字节或二进制对象时应用字节流类。下面分别讲述字节流和字符流类。
17.4 字 节 流
字节流类为处理字节式输入/输出提供了丰富的环境。一个字节流可以和其他任何类型的对象并用,包括二进制数据。这样的多功能性使得字节流对很多类型的程序都很重要。因为字节流类以InputStream 和OutputStream为顶层,我们就从讨论这两个类开始。
17.4.1 InputStream(输入流)
InputStream 是一个定义了Java流式字节输入模式的抽象类。该类的所有方法在出错条件下引发一个IOException 异常。表17-1显示了InputStream的方法。
表17-1 InputStream 定义的方法
方法 描述
int available( ) 返回当前可读的输入字节数
void close( ) 关闭输入源。关闭之后的读取会产生IOException异常
void mark(int numBytes) 在输入流的当前点放置一个标记。该流在读取numBytes个字节
前都保持有效
boolean markSupported( ) 如果调用的流支持mark( )/reset( )就返回true
int read( ) 如果下一个字节可读则返回一个整型,遇到文件尾时返回-1
int read(byte buffer[ ]) 试图读取buffer.length个字节到buffer中,并返回实际成功读取
的字节数。遇到文件尾时返回-1
int read(byte buffer[ ], int offset,
int numBytes)
试图读取buffer中从buffer[offset]开始的numBytes个字节,返回
实际读取的字节数。遇到文件尾时返回-1
void reset( ) 重新设置输入指针到先前设置的标志处
long skip(long numBytes) 忽略numBytes个输入字节,返回实际忽略的字节数
17.4.2 OutputStream(输出流)
OutputStream是定义了流式字节输出模式的抽象类。该类的所有方法返回一个void 值并且在出错情况下引发一个IOException异常。表17-2显示了OutputStream的方法。
表17-2 OutputStream 定义的方法
方法 描述
void close( ) 关闭输出流。关闭后的写操作会产生IOException异常
void flush( ) 定制输出状态以使每个缓冲器都被清除,也就是刷新输出缓冲区
void write(int b) 向输出流写入单个字节。注意参数是一个整型数,它允许你不必把参数转换成字节型就可以调用write()
void write(byte buffer[ ]) 向一个输出流写一个完整的字节数组
void write(byte buffer[ ], int offset,
int numBytes)
写数组buffer以buffer[offset]为起点的numBytes个字节区域内的内容
注意:多数在表17-1和表17-2中描述的方法由InputStream 和OutputStream的子类实现,但mark( )和reset( )方法除外。注意下面讨论的每个子类中它们的使用和不用情况。
<<上一页
1
2
3
4
5
6
7
8
9
10
11
12
下一页>>