首页 > 代码库 > 输入输出处理 上

输入输出处理 上

第九章 输入输出处理

9.1 I/O流的概念和划分

9.1.1数据流是一组有顺序的、有起点和终点的字节集合,是对输入和输出的总称和抽象。一般地,数据流分为输入流(InputStream)和输出流(OutputStream).输入流只能读,不能写,而输出流只能写不能读

9.1.2 Java流的划分

Java2定义了两种流:字节流和字符流。字节流为处理字节的输入和输出提供了方便的方法。字符流为字符的输入和输出处理提供了方便。它们采用了统一的编码标准,因而可以国际化。在某些场合,字符流比字节流更有效。需要说明的是,在最底层,所有的输入输出都是字节形式的。基于字符的流只为处理字符提供方便有效的方法。

字节流类:InputStreamOutputStream

字节输入流的描述

InputStream

表示输入字节流的抽象类

FileInputStream

文件字节输入流

ByteArrayInputStream

字节数组输入流,把字节数组作为数据源

FilterInputStream

过滤字节输入流,提供扩展功能的输入流

PipedInputStream

管道输入流,可用于线程之间的通信

ObjectInputStream

对象输入流

SequenceInputStream

顺序输入流,把多个流顺序合并成一个流

AuiioInputStream

音频输入流

BufferedInputStream

缓冲输入流

CipherInputStram

加密输入流

DataInputStream

包含Java标准数据类型方法的输入流

DigesInputStream

摘要数据流,在输入过程中,生成流的摘要

ProgressMonitorInputStream

过程监视数据流

PushbackInputStream

能够向输入流退回一个字节的输入流

字节输出流的描述和字节输入流的几乎是相对应的 在这里就不在描述

字符流类:ReaderWriter。这些抽象类处理统一编码的字符流

字符输入流的描述

Reader

表示字符输入流的抽象类

BufferedReader

带缓冲功能的字符的抽象类

CharArrayReader

把字符数组作为输入源的输入流

InputStreamReader

字节楼向字符流转换流

PipedReader

管道字符输入流

StringReader

把字符串作为输入源的输入流

LineNumberReader

能够统计行数的输入流

PushbackReader

能够向输入流退回一个字符的输入流

FileReader

文件字符输入流

9.2文件的操作

9.2.1File

在进行文件操作时,需要知道一些关于文件的信息。File类提供了一些方法来操纵文件和获取文件信息。

                   File类提供的方法

Boolean canRead()

文件是否可读

Boolean canWriter

文件是否可写

Int compareTo(File pathname)

比较两个文件的名称

Boolean createNewFile()

创建文件

Static File createTemFile(String prefix,String suffix)

在默认的临时文件目录创建一些空文件

Boolean detete()

删除文件

Void deleteOnExit()

Java虚拟机终止时删除与调用对象相关的文件

Boolean equals(Object obj)

比较两个文件对象

Boolean exists()

测试文件是否存在

File getAbsoluteFile()

返回绝对文件名

String getAbsolutePath()

返回绝对路径

String getCanonicalPath()

返回规范的路径字符串

String getName()

返回文件名

String getParent()

返回父目录

String getPath()

返回路径

Boolean isAbsolute()

是否是绝对路径

Boolean isDirectory()

是否为目录

Boolean isFile()

是否为文件

Boolean isHidden()

是否隐藏文件

Long lastModified()

上次修改的时间

Long length()

文件长度

String []list()

列出目录中的文件

String []list(FilenameFilter filter)

使用过滤器列出目录中的文件

Boolean mkdir()

创建目录

Boolean mkdirs()

创建多层目录

Boolean renameTo(File dest)

重命名文件

Boolean setReandOnly()

设置只读

String toString()

把文件对象转化成字符串

URI toURI()

把文件对象转化成URI对象

URL toURL()

把文件对象转化成URL对象

 

 

 

 

 

 

9.2.2目录

目录是一个包含其他文件和路径类表的File类。当创建一个File对象且它是目录时,则isDirectory()方法返回true。在这种情况下,可以调用该对象的list()方法来提取该目录内部其他文件和目录的列表。该方法有两种形式。

第一种形式:String[] list()  文件名列表在一个String对象的数组中返回

第二种形式:File[]listFiles() 文件对象列表在一个File对象的数组中返回

9.3字节流处理

InputStream 的方法

方法

描述

Int available()

返回当前可读的输入字节数

Void close()

关闭输入源,关闭之后的读取会产生IOException

Void mark(int readlimit)

在输入流当前点放置一个标记。该流在读取readlimit个字节之前都有效

Boolean markSupported()

如果调用的流支持mark()/reset() 就返回true

Int read()

如果下一个字节可读则返回一个整型,遇到文件尾返回-1

Int read(byte b[])

试图读取b.length个字节到b中,并返回实际成功读取的字节数。遇到文件尾返回-1

Int read(byte b[],int offset,int len)

试图读取len个字节到b中,从offert开始存放,并返回实际成功读取的字节数。遇到文件尾返回-1

Void reset()

重新设置输入指针到先前设置的标志处

Long skip(long n)

跳过n个输入字节,返回实际跳过的字节数

 

OutputStream的方法

方法

描述

Void close()

关闭输出流。关闭后的写操作会产生IOException异常

Void flush()

刷新输出缓冲区

Void write(int b)

向输出流写入单个字节,注意参数是个整型,它允许不必把参数转换成字节型就可以调用write(),但是输出的有效值为b的低8位,高24位被舍弃

Void write(byte b[])

向一个输出流写一个完整的字节数组

Void write(byte b[],int offset,int len)

输出数组bb[offset]为起点的len个字节区域内的内容

 

9.3.2 标准输入输出流

标准输入:stdin 对象时键盘

标准输出:stdout 对象是屏幕

标准错误输出stderr 对象是屏幕

 

public class StdInput {

public static void main(String[] args) throws IOException {

System.out.println("input");

byte b[] = new byte[512];

int count = System.in.read(b);

System.out.println("Output");

for (int i = 0; i < count; i++) {

System.out.print(b[i] + " ");

}

System.out.println();

for (int i = 0; i < count; i++) {

System.out.print(b[i] + " ");

}

System.out.println("count= " + count);

}

}

9.3.3 文件字节流

InputStreamOutputStream 都是抽象类不能实例化,因此在实际的应用中都使用的是它们的子类,这些子类在实现其超类方法的同时又定义了特有的功能,用于不同的场合。

FileInputStream 用于顺序访问本地文件,从超类继承readclose方法,对文件进行操作。

FileOutputStream 用于向一个本地文件写数据。它从超类继承writeclose方法。

Boolean canRead()

文件是否可读

Boolean canWriter

文件是否可写

Int compareTo(File pathname)

比较两个文件的名称

Boolean createNewFile()

创建文件

Static File createTemFile(String prefix,String suffix)

在默认的临时文件目录创建一些空文件

Boolean detete()

删除文件

Void deleteOnExit()

Java虚拟机终止时删除与调用对象相关的文件

Boolean equals(Object obj)

比较两个文件对象

Boolean exists()

测试文件是否存在

File getAbsoluteFile()

返回绝对文件名

String getAbsolutePath()

返回绝对路径

String getCanonicalPath()

返回规范的路径字符串

String getName()

返回文件名

String getParent()

返回父目录

String getPath()

返回路径

Boolean isAbsolute()

是否是绝对路径

Boolean isDirectory()

是否为目录

Boolean isFile()

是否为文件

Boolean isHidden()

是否隐藏文件

Long lastModified()

上次修改的时间

Long length()

文件长度

String []list()

列出目录中的文件

String []list(FilenameFilter filter)

使用过滤器列出目录中的文件

Boolean mkdir()

创建目录

Boolean mkdirs()

创建多层目录

Boolean renameTo(File dest)

重命名文件

Boolean setReandOnly()

设置只读

String toString()

把文件对象转化成字符串

URI toURI()

把文件对象转化成URI对象

URL toURL()

把文件对象转化成URL对象

输入输出处理 上