IO流中的字符流

        在Java API中,可以从其中读入一个字节序列的对象称之输入流,而可以向其中写入一个字节序列的对象称做输出流。 [1]  字节流就是普通的二进制流,读出来的是bit,而字节流不便于处理Unicode形式存储的信息。字符流就是在字节流的基础按照字符编码处理,处理的是char。字符流文件是指读写文件时采用字符流的方法。

就是在字节流的基础按照字符编码处理,处理的是char。

字符输入流(Reader):

构造方法:

protected Reader()
          创建一个新的字符流 reader,其重要部分将同步其自身的 reader。
protected Reader(Object lock)
          创建一个新的字符流 reader,其重要部分将同步给定的对象。
File f1 = new File("D:/aa/bb/cc/d.txt");
FileWriter wr = new FileWriter(f1);

 常用方法展示:

read():

要读取的文件:

 代码:

public static void main(String[] args) throws Exception {
        File f1 = new File("D:/aa/bb/cc/d.txt");
        //创建输出流
        Reader reader = new FileReader(f1);
        //循环读取内容
        int n;
        while ((n = reader.read()) != -1){
            System.out.println((char) n);
        }
        //关闭资源
        reader.close();
    }

运行结果: 

 read(char[] cbuf)

要读取的文件: 

 代码:

    public static void main(String[] args) throws Exception {
        File f1 = new File("D:/aa/bb/cc/c.txt");
        //创建输入流
        Reader reader = new FileReader(f1);
        //创建一个char数组接收数据
        char[] chars = new char[10];
        //循环读取内容
        int n;
        while ((n = reader.read(chars)) != -1){
            String s = new String(chars,0,n);
            System.out.print(s);
        }
        //关闭资源
        reader.close();
    }

运行结果:  

 方法摘要:

abstract  voidclose()
          关闭该流并释放与之关联的所有资源。
 voidmark(int readAheadLimit)
          标记流中的当前位置。
 booleanmarkSupported()
          判断此流是否支持 mark() 操作。
 intread()
          读取单个字符。
 intread(char[] cbuf)
          将字符读入数组。
abstract  intread(char[] cbuf, int off, int len)
          将字符读入数组的某一部分。
 intread(CharBuffer target)
          试图将字符读入指定的字符缓冲区。
 booleanready()
          判断是否准备读取此流。
 voidreset()
          重置该流。
 longskip(long n)
          跳过字符。

字符输出流(Writer)

创建输出流:

FileWriter wr = new FileWriter(f1);

使用方法:

    public static void main(String[] args) throws Exception {
        File f1 = new File("D:/aa/bb/cc/d.txt");
        //创建输出流
        FileWriter wr = new FileWriter(f1);
        //写入内容
        wr.write("只因你太美");
        //刷新该流的缓冲
        wr.flush();
        //关闭资源
        wr.close();
    }

 注意:写入内容后需要使用flush()方法刷新,否则内容不会被写入。

运行结果:

方法摘要: 

 Writerappend(char c)
          将指定字符添加到此 writer。
 Writerappend(CharSequence csq)
          将指定字符序列添加到此 writer。
 Writerappend(CharSequence csq, int start, int end)
          将指定字符序列的子序列添加到此 writer.Appendable。
abstract  voidclose()
          关闭此流,但要先刷新它。
abstract  voidflush()
          刷新该流的缓冲。
 voidwrite(char[] cbuf)
          写入字符数组。
abstract  voidwrite(char[] cbuf, int off, int len)
          写入字符数组的某一部分。
 voidwrite(int c)
          写入单个字符。
 voidwrite(String str)
          写入字符串。
 voidwrite(String str, int off, int len)
          写入字符串的某一部分。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值