读书人

Java中的输入与输出流详解(2)

发布时间: 2013-04-09 16:45:09 作者: rapoo

Java中的输入与输出流详解(二)

3、字符流

我们已经介绍了字节流类并详细地讲解了字节流。虽然字节流的功能十分强大,它能直接或间接地处理任何数据类型的输入和输出操作,但是它却不能直接操作16位的Unicode字符。这时提供直接的字符输入和输出就显得非常有必要了。

1)、如何读取Unicode字符

Reader和Writer类处在字符流类的顶层,是所有字符流类的基类。同时它们都是抽象的,它们仅提供了基本的函数类型,没有具体实现,所以不能直接生成对象。要通过其子类来生成所需的对象,同时必须重写Reader和Writer类中的方法。下面是它们的主要方法:

Reader方法:

>read():从输入流中读取下一个字符,并以int类型返回。如遇输入流的末尾则返回-1

>read(char[] buffer):读取长度为buffer.length的字符到buffer中,返回本次读取的字符数;

>read(char[] buffer , int off , intlen):同上,写入buffer中从下标off开始的位置,并返回本次读取的字符数。

>close():关闭当前的输入流;

>skip(long n):跳过n个字符,返回实际跳过的字符数;

>mark(int readlimit):在输入流的当前位置设置标记,该标记在从流中读取readlimit个字符前都保持有效;

>markSupported():测试调用的流是否支持mark()/reset();

>ready():测试输入流是否准备好读取字符;

>reset():重置输入指针到先钱设定的标记处。

Writer方法:

>write(int c):将指定的字符c作为数据写入输出流,下面是对其的重写:

>write(char[]buffer):将buffer中长度为buffer.length个字符的数据写入输出流;

>write(char[] buffer , int off , intlen):同上,将buffer中从下标off开始的长度为len个字符的数据写入输出流;

>write(String str):将字符串str写入输出流;

>write(String str , intoff , int len):将字符串中以off为起点的len个字符写入输出流;

>close():关闭当前的输出流,同时释放相关的系统资源;

>flush():刷新输出流。

上述方法在调用时如果出现错误,将会跑出一个IOException异常。

2)、读取字符文件

FileReader和FileWriter类分别继承了Reader和Writer类,它们重写了父类中的所有方法,主要用于字符文件的读写操作。FileReader类用于读取字符文件的内容,每次赌气一个字符或一个字符数组。FileWriter类用于写入字符文件的内容,每次写入一个字符或一个字符串。

FileReader类的两个常用的构造函数如下:

> FileReader(StringfilePath)//filePath指被打开并被读取数据的文件的全路径

>FileReader(FilefileObj)//fileObj指被打开并被读取数据的文件

下面的实例讲解了FileReader的使用方法:

public static voidmain(String args[])       {              File f1=new File("F:\\java基础\\wndang\\程序\\5\\5-2");//打开一个文件              File f2=new File(f1,"User.java");              File f3=new File("F:\\java基础\\wndang\\程序\\5\\5-2\\User.java");         System.out.println(f2);         System.out.println();         //获取该文件的各个属性和信息         System.out.println("exists:         "+f2.exists());              System.out.println("isfile:         "+f2.isFile());              System.out.println("Directory:      "+f2.isDirectory());              System.out.println("Read:           "+f2.canRead());              System.out.println("Write:          "+f2.canWrite());              System.out.println("Hidden:         "+f2.isHidden());              System.out.println("ReadOnly:       "+f2.setReadOnly());              System.out.println("Name:           "+f2.getName());              System.out.println("Parent:         "+f2.getParent());              System.out.println("AbsolutePath:   "+f2.getAbsoluteFile());              System.out.println("lastModified:   "+f2.lastModified());              System.out.println("length:         "+f2.length());              System.out.println("list            "+f2.list());              System.out.println("mkdir           "+f2.mkdir());              File f4=new File("Student.java");              System.out.println("newname"+f2);              f2.renameTo(f4);              System.out.println("Name:           "+f4.getName());              System.out.println(f2+"exist        "+f2.exists());              System.out.println(f4+"exist        "+f2.exists());              System.out.println("delete"+f4);              System.out.println("equals          "+f2.equals(f4));              f4.delete();              System.out.println(f4+"exist        "+f4.exists());              System.out.println("String          "+f2.toString());       }

读书人网 >编程

热点推荐