java学习笔记8 字符流

本文介绍了Java中的字符流概念,包括Reader和Writer两个抽象类的基本使用方法,并通过具体的代码示例展示了如何利用FileReader和FileWriter进行文件的读写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符流

尽管字节流提供了处理任何类型输入/输出操作的足够的功能, 但它们不能直接操作 Unicode 字符。既然 Java 的一个主要目标是支持“一次编写,处处运行” ,包含直接的字符输入/输出的支持是必要的。

Reader

Reader是定义Java的流式字符输入模式的抽象类。该类的所有方法在出错情况下

都将引发IOException异常。

Reader类中的方法


Writer

Writer 是定义流式字符输出的抽象类。所有该类的方法都返回一个void 值并在出错条件下引发IOException 异常。

Writer类中的方法


FileReader

FileReader 类创建了一个可以读取文件内容的 Reader 类。它最常用的构造方法显示如下:

FileReader(String filePath);

FileReader(File fileObj);

每一个都能引发一个FileNotFoundException 异常。这里,filePath 是一个文件的完整路径,fileObj 是描述该文件的 File 对象。

FileWriter

FileWriter 创建一个可以写文件的 Writer 类。它最常用的构造方法如下:

FileWriter(String filePath);

FileWriter(String filePath, boolean append);

FileWriter(File fileObj);

它们可以引发IOException 或SecurityException 异常。这里,filePath 是文件的绝对路径,fileObj 是描述该文件的 File 对象。如果 append 为 true,输出是附加到文件尾的。FileWriter 类的创建不依赖于文件存在与否。在创建文件之前,FileWriter 将在创建对象时打开它来作为输出。如果试图打开一个只读文件,将引发一个 IOException异常。

代码示例:

import java.io.*;
public class CharDemo {
 
       publicstatic void main(String[] args) {
              Filef = new File("e:\\temp.txt");
              Writerout = null;
              try{
                      out = new FileWriter(f);
                  } catch (IOException e) {
                     e.printStackTrace();
               }
              String  str = "Hello world!!!";
              try{
                      out.write(str);
                  } catch (IOException e1) {
                 e1.printStackTrace();
                   }
             
              try{
                      out.close();
                  } catch (IOException e2) {
                     e2.printStackTrace();
                 }
      
              Readerin = null;
              try{
                        in = new FileReader(f);
                  } catch (FileNotFoundException e3) {
                     e3.printStackTrace();
                 }
              charc1[] = new char[1024];
              inti = 0;
              try{
                     i=in.read(c1);
              }catch (IOException e4) {
                  e4.printStackTrace();
              }
              try{
                     in.close();
              }catch (IOException e5) {
                     e5.printStackTrace();
              }
              System.out.println(newString (c1,0,i));
       }
}


注意:字符流用到了缓冲区,而字节流没有用到缓冲区。可以用 Writer 类中的 flush()方法,强清空缓冲区。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值