Java程序设计项目化教程-8.2 字符流的操作改_第1页
Java程序设计项目化教程-8.2 字符流的操作改_第2页
Java程序设计项目化教程-8.2 字符流的操作改_第3页
Java程序设计项目化教程-8.2 字符流的操作改_第4页
Java程序设计项目化教程-8.2 字符流的操作改_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

同字节流一样,字符流也有两个抽象的顶级父类,分别是Reader和Writer。其中,Reader是字符输入流,用于从某个源设备读取字符;Writer是字符输出流,用于向某个目标设备写入字符。Reader和Writer作为字符流的顶级父类,也有许多子类。项目导读8.2.1字符流的操作InputStreamReaderLineNumberReaderBufferedReaderCharArrayReaderPipedReaderFileReaderReader8.2.1字符流的操作FileWriterOutputStreamWritererBufferedWriterCharArrayWriter

PipedWriterWriterPrintWriter8.2.1字符流的操作在程序开发中,经常需要对文本文件的内容进行读取,如果想从文件中直接读取字符,便可以使用字符输入流FileReader,通过此流可以从关联的文件中读取一个或一组字符。例8-8创建字符输入流FileReader对象读取文件中的内容importjava.io.*;publicclassexample8_8{

publicstaticvoidmain(String[]args)throwsException{ //创建一个FileReader对象用来读取文件中的字符

FileReaderreader=newFileReader("reader.txt");

intch;//定义一个变量用于记录读取的字符

while((ch=reader.read())!=-1){

//循环判断是否读取到文件的末尾

System.out.println((char)ch);

//不是字符流末尾就转为字符打印 }

reader.close();

//关闭文件读取流,释放资源 }}例8-8创建字符输入流FileReader对象读取文件中的内容字符输入流的read()方法返回的是int类型的值,如果想获得字符就需要进行强制类型转换,如程序源代码就是将变量ch强制转换为char类型再打印。例8-9使用FileWriter将字符写入文件importjava.io.*;publicclassexample8_9{ publicstaticvoidmain(String[]args)throwsException{//创建一个FileWriter("writer.txt");

FileWriterwriter=newFileWriter("writer.txt");

Stringstr="Hello,world";

writer.write(str);//将字符数据写入文本文件中 writer.write("\r\n");//将输出语句换行 writer.close();//关闭写入流,释放资源 }}例8-9使用FileWriter将字符写入文件FileWriter与FileOutputStream一样,如果指定的文件不存在,就会先创建文件,再写入数据,如果文件存在,则会先清空文件中的内容,再进行写入。如果想在文件末尾追加数据,同样需要调用重载的构造方法。例8-9使用FileWriter将字符写入文件importjava.io.*;publicclassexample8_9{ publicstaticvoidmain(String[]args)throwsException{//创建一个FileWriter("writer.txt");

FileWriter

Writer=new

FileWriter("writer.txt",true); Stringstr="Hello,world";

writer.write(str);//将字符数据写入文本文件中 writer.write("\r\n");//将输出语句换行 writer.close();//关闭写入流,释放资源 }}8.2.1字符流的操作字节流可以对一个已存在的流进行封装来实现数据读写功能,利用字节流可以有效地提高读写数据的效率。字符流同样提供了带缓冲区的封装流,分别是BufferedReader和BufferedWriter。8.2.1字符流的操作其中,BufferedReader用于对字符输入流进行封装,BufferedWriter用于对字符输出流进行封装。需要注意的是,在BufferedReader中有一个重要的方法readline(),该方法用于一次读取一行文本。例8-10使用这两个字符流实现文件的复制publicclassexample8_10{publicstaticvoidmain(String[]args)throwsException{

FileReaderreader=newFileReader("src.txt");

//创建一个BufferedReader缓冲对象

BufferedReaderbr=newBufferedReader(reader);

FileWriterWriter=newFileWriter("des.txt");

//创建一个BufferdWriter缓冲区对象

BufferedWriterbW=newBufferedWriter(Writer);

Stringstr;

//每次读取一行文本,判断是否到文件末尾

while((str=br.readLine())!=null){

bW.write(str);

//写入一个换行符,会根据不同的操作系统生成 bW.newLine();

}

br.close();

bW.close();

}}例8-10使用这两个字符流实现文件的复制src.txt显示内容des.txt显示内容由于字符缓冲流内部使用了缓冲区,在循环中调用BufferedWriter的write()方法写入字符时,这些字符首先会被写入缓冲区,当缓冲区写满时或调用close()方法时,缓冲区中的字符才会被写入目标文件。因此在循环结束时一定要调用close()方法,否则极有可能会导致部分存在缓冲区中的数据没有被写入目标文件。8.2.1字符流的操作通过转换流进行数据读写的过程图例8-11将字节流转为字符流importjava.io.*;publicclassexample8_11{

publicstaticvoidmain(String[]args)throwsException{ //创建一个文件字节输入流,并指定源文件 FileInputStreamin=newFileInputStream("src.txt"); //将字节流输入转换成字符输入流 InputStreamReaderisr=newInputStreamReader(in); //创建一个字节输出流对象,并指定目标文件

FileOutputStreamout=newFileOutputStream("des.txt");

//将字节输出流转换成字符输出流

OutputStreamWriterosw=newOutputStreamWriter(out);例8-11将字节流转为字符流

intch;

//定义一个变量用于记录读取的字符

while((ch=isr.read())!=-1){//循环判断是否读取到文件的末尾

osw.write(ch);//将字符数据写入des.txt文件中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论