丁保国的博客

收集整理工作生活,点点滴滴

  :: :: 博问 :: 闪存 :: :: :: :: 管理 ::

第十三讲 Java中的字符流

 

主要内容

ReaderWriter

文件字符输入流FileReader

文件字符输出流FileWriter

字符流应用举例

标准字符输出流PrintWriter*

 

ReaderWriter

Reader

抽象类,规定了字符输入流的最基本操作——读操作。

read方法

public int read() throws IOException

从流中读一个字符,当流中没有数据可读时,返回值为-1

public int read(char[] c) throws IOException

根据数组尺寸从流中读字符,置于数组中。返回读取字符个数。

public int read(char[] c,int off,int len) throws IOException

读入len个字符,从下标off开始置入数组cbuf

 

其他方法

skip方法:从流中跳过字符。

public long skip(long n) throws IOException

close方法:关闭流。

public abstract void close() throws IOException

 

思考

1.      Reader子类对象,表示的是怎样的一种数据流?

2.      对于Reader数据流,如何从中读取数据?

3.      一次性可读取一组数据吗?

4.      在数据流操作时,将会抛出什么异常?

5.      如何创建一个Reader子类对象?

 

Writer

抽象类,规定了字符输出流的最基本操作——写操作。

写方法

public void write(int b) throws IOException

向流中写一个字符数据

public void write(char[] cbuf) throws IOException

向流中写字符数组cbuf

public void write(String s) throws IOException

向流中写一个字符串(很实用)

 

flush方法

public abstract void flush() throws IOException

将缓冲区中数据立即写入到输出流。

 

close方法

public abstract void close() throws IOException

思考

1.      Writer子类对象,表示的是怎样的一种数据流?

2.      对于Writer数据流,如何向它写入数据?

3.      可以写入什么样的数据?

4.      如何关闭Reader数据流和Writer数据流?

5.      关闭意味着什么?

6.      如何创建一个Writer子类对象?

 

文件字符输入流FileReader

字符对文件进行数据读入操作。更适合于对文本文件的操作。

 

文件字符输入流的创建

public FileReader(String filename)

throws FileNotFoundException

public FileReader(File file)

 

 

应用举例

1:显示一个指定文本文件的内容(如:d:\javawork\try.txt)

import java.io.*;

class ReadFile{

  public static void main(String[] a) throws Exception{

     File f1=new File("d:\\javawork\\try.txt");

     FileReader fr=new FileReader(f1);

     int b;

     while((b=fr.read())!=-1){

        System.out.print((char)b);

     }

     System.out.println();

     fr.close();

  }

}

 

思考

1.      如果创建一个指向文件的字符输入流?

2.      文件字符输入流有何用?

3.      上例中,如果文件不存在,哪条语句将引发异常?

4.      试总结,从字符输入流中读取所有文本的方法?

5.      修改程序:文件内容显示时,一行空一行。

6.      修改程序:进行显示过滤,只显示文件中的英文字母。

 

文件字符输出流FileWriter

字符对文件进行数据写入操作。

 

 

文件字符输出流的创建

FileWriter(File file)

FileWriter(File file, boolean append)

FileWriter(String fileName)

FileWriter(String fileName, boolean append)

throws IOException

 

 

 

 

应用举例

例2:创建文件“d:\javawork\try.txt”,并向文件中写入两行。

import java.io.*;

class CreateFile{

  public static void main(String[] aa) throws Exception{

     FileWriter out=new FileWriter("d:\\javawork\\try.txt");

     out.write("It's try.\r\n");

     out.write("试一试!");

     out.close();

  }

}

 

练习1:文件内容追加若干行。(ModiText.java)

练习2:文本文件复制。(CopyText.java,生成文本文件newtry.txt)

 

字符流应用举例

1、设计Copy类,在其中设计一个静态的sendChar方法,从一个Reader流向另一个Writer流进行数据传输。

 

2、设计一个Test1类,利用Copy类中的sendChar方法方法,将文件try.txt的内容向控制台输出显示。

提示:new PrintWriter(System.out)----向标准输出设备的字符输出流。

 

3、设计一个Test2类,利用Copy类中的sendChar方法方法,将文件star.txt复制生成另一个文本文件sstar.txt

 

 

PrintWriter

 

向标准输出设备的输出流,可直接用来输出各种类型的数据。

 

构造方法

public PrintWriter(OutputStream out)

从一个存在的字节输出流创建一标准字符输出流。

public PrintWriter(Writer out)

从一个存在的字符输出流创建一标准字符输出流。(可加第二个boolean型参数,以设置是否自动强制输出)

说明PrintWriter须从别的OutputSteam流或者Writer流而创建。不能直接来自文件等节点。

如:

……=new PrintStream("d:\\try.txt");----!!!

……=new PrintStream(new FileWriter("d:\\try.txt"));----!

……=new PrintStream(new FileInputStream("d:\\try.txt"));----!

 

 

posted on 2007-07-21 10:44  丁保国  阅读(687)  评论(0编辑  收藏  举报