第一范文网 - 专业文章范例文档资料分享平台

ch09

来源:用户分享 时间:2025/7/28 21:49:01 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

int no;

String name; double score; try{

FileInputStream fin=new FileInputStream(\ DataInputStream din=new DataInputStream(fin); int i=0; while(i==0){

no=din.readInt(); name=din.readUTF(); score=din.readDouble();

System.out.println(no+\ }

din.close(); fin.close();

}catch(EOFException e){

System.out.println(\文件结束!\ }

catch(IOException e){

System.out.println(\文件错误!\ } } }

程序分析:

由于一个文件中可能有多条记录,本例使用while循环来读出全部记录,当读到文件尾时,readInt()方法会抛出EOFException异常,所以本例中采用的while循环是一个死循环,当读到文件尾,随着异常的抛出,循环结束。

9.3 字符流类

与InputStream类,OutputStream类相同,Reader类和Writer类也都是基本输入/输出类,也是不能实例化的抽象类,它们为通用的字符流类提供了一些基本方法和标准接口。

字符流类及其子类详见图9-3。

9.3.1 Reader(字符输入流)类和Writer(字符输出流)类

Reader类的常用方法与InputStream类基本相似,Writer类的常用方法与OutputStream类基本相似。它们的主要区别是:InputStream类和OutputStream类操作的是字节,而Reader类和Writer类操作的是字符。

Writer类又特有下列几个方法: Writer append(char c)

将指定字符追加到此 writer。 Writer append(CharSequence csq)

将指定字符序列追加到此 writer。

Writer append(CharSequence csq, int start, int end)

将指定字符序列的子序列追加到此 writer.Appendable。

与InputStream 类的子类相同,Reader类的子类重写了不同功能的read()方法,与OutputStream类的子类相同,Writer类的子类重写了不同功能的write()方法。

9.3.2 字符流类的常用子类及其应用

1.BufferedReader类与InputStreamReader类 BufferedReader类的构造方法 BufferedReader(Reader in)

创建一个使用默认大小输入缓冲区的缓冲字符输入流。 BufferedReader(Reader in, int sz)

创建一个使用指定大小输入缓冲区的缓冲字符输入流。

InputStreamReader类的构造方法 InputStreamReader(InputStream in)

创建一个使用默认字符集的 InputStreamReader。 InputStreamReader(InputStream in, Charset cs)

创建使用给定字符集的 InputStreamReader。 InputStreamReader(InputStream in, CharsetDecoder dec)

创建使用给定字符集解码器的 InputStreamReader。 InputStreamReader(InputStream in, String charsetName) 创建使用指定字符集的 InputStreamReader。

BufferedReader类和InputStreamReader类的常用方法都主要继承自Reader类。从BufferReader类的构造方法可看出,其参数只能是Reader类的对象,也就是说BufferReader类只能从Reader对象读数据。

代表标准输入的System.in是一个InputSteam类的对象,所以需要将InputStream类的对象转换成Reader类的对象,这就需要一个转换器。InputStreamReader类是将字节输入流转换成字符输入流的转换器。

为了达到最高效率,可以考虑在 BufferedReader 内包装 InputStreamReader。 【例9-8】 从键盘输入字符,并在屏幕上显示。 import java.io.*;

public class Exam9_8{ void run(){

char input[]=new char[256]; //字符输入缓冲数组。注意类型为char

InputStreamReader strin=new InputStreamReader(System.in); //用键盘输入流对象为参数创建字符输入流对象strin

BufferedReader bufin=new BufferedReader(strin);

//用字符输入流对象strin为参数创建缓冲字符输入流对象bufin try{

System.out.println(\请输入:\ int num=bufin.read(input);

//将从键盘输入的字符放在字符输入缓冲数组input中

System.out.println(\您输入的字节数为:\ String s=new String(input,0,num);

System.out.println(\您输入的字符串为:\ }catch(IOException e){

System.out.println(\错误\ } }

public static void main(String args[]){ Exam9_8 ee=new Exam9_8(); ee.run(); } }

程序分析:

本例是用InputStreamReader对象把键盘输入的字节输入流类型转换为字符输入流,并用缓冲字符输入流来读数据。

2.BufferWriter类与OutputStreamWriter类

BufferWriter类与OutputStreamWriter类都继承自Writer类。BufferWriter类将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。OutputStreamWriter 是字符流通向字节流的桥梁,起到转换器的作用。

BufferWriter类的构造方法: BufferedWriter(Writer out)

创建一个使用默认大小输出缓冲区的缓冲字符输出流。 BufferedWriter(Writer out, int sz)

创建一个使用指定大小输出缓冲区的新缓冲字符输出流。

OutputStreamWriter类的构造方法: OutputStreamWriter(OutputStream out)

创建使用默认字符编码的 OutputStreamWriter。 OutputStreamWriter(OutputStream out, Charset cs)

创建使用给定字符集的 OutputStreamWriter。 OutputStreamWriter(OutputStream out, CharsetEncoder enc)

创建使用给定字符集编码器的 OutputStreamWriter。 OutputStreamWriter(OutputStream out, String charsetName) 创建使用指定字符集的 OutputStreamWriter。 3.PrintWriter(屏幕字符输出流)类

PrintWriter类称作屏幕字符输出流类,用来把字符输出流做为格式化形式在屏幕上输出。此类实现在 PrintStream 中的所有 print 方法。

PrintWriter类提供了打印系统定义的所有基本数据类型的print()方法和println()方法。 4.FileReader类与FileWriter类

前面9.2.2节介绍的FileInputStream类与FileOutputStream类用于字节文件的输入/输出,FileReader类与FileWriter类用于字符文件的输入/输出。

FileReader类是Reader类的子类,FileWriter类是Writer类的子类。 FileReader类的构造方法:

FileReader(File file)

在给定从中读取数据的 File 的情况下创建一个新 FileReader。 FileReader(FileDescriptor fd)

在给定从中读取数据的 FileDescriptor 的情况下创建一个新 FileReader。 FileReader(String fileName)

在给定从中读取数据的文件名的情况下创建一个新 FileReader。 FileWriter类的构造方法: FileWriter(File file)

在给出 File 对象的情况下构造一个 FileWriter 对象。 FileWriter(File file, boolean append)

在给出 File 对象的情况下构造一个 FileWriter 对象。 FileWriter(FileDescriptor fd)

构造与某个文件描述符相关联的 FileWriter 对象。 FileWriter(String fileName)

在给出文件名的情况下构造一个 FileWriter 对象。 FileWriter(String fileName, boolean append)

在给出文件名的情况下构造 FileWriter 对象,它具有指示是否挂起写入数

据的 boolean 值。

【例9-9】 将键盘输入的内容存入文件,然后再读出。 import java.io.*;

public class Exam9_9{

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

byte b[]=new byte[256]; System.out.println(\请输入:\

System.in.read(b); //通过键盘输入内容

String s1=new String(b); //将字节数组转换为字符串 s1=s1.trim(); //给字符串去空格

BufferedWriter bw=new BufferedWriter(new FileWriter(\ bw.write(s1,0,s1.length());

System.out.println(\已存入文件\ bw.close();

BufferedReader br=new BufferedReader(new FileReader(\ String s2=br.readLine();

System.out.println(\你存入到文件中的内容是:\ br.close(); } }

程序分析:

(1)本例中利用System.in()接收键盘输入的数据,存入字节数组b[]中,然后将其转换为字符串。

(2)语句BufferedWriter bw=new BufferedWriter(new FileWriter(\创建了两个对

搜索更多关于: ch09 的文档
ch09.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4mnmb4iv5u208bi78dqg_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top