javaio流之字符流

        首先,字符流可以理解为字节流加上字符集,字符流分为字符输入流与字符输出流,即Reader与Writer,接下来简单介绍一下FileWriter与FileReader;

        1.FileReader

           FileReader又分为空参与有参,空参是把字节解码并且转成十进制返回。有参即把读取字节,解码,强转三步合并了,强转后的字符放到数组中

public int read()//读取数据,读到末尾返回-1
public int read(char[] buffer)//读取多个数据,读到末尾返回-1

           按照字节进行读取,遇到中文一次读取多个字节,读取后解码,返回一个整数(十进制)

具体用法可以参考以下俩个例子(a.txt中存储了若干中文)

import  java.io.*;
public  class test {
    public static void main(String[] args) throws IOException {
        FileReader fr=new FileReader("src\\a.txt");
        int ch;
        while((ch=fr.read())!=-1){
        System.out.print(ch);
        }
        fr.close();
    }
}

运行上面这个代码结果会是一堆数字,原因是read底层在读取之后还会进行解码并转成十进制并且把它返回,这个数据也表示字符集上的数字

我们只需要加上char进行强转即可打印a.txt中的中文

import  java.io.*;
public  class test {
    public static void main(String[] args) throws IOException {
        FileReader fr=new FileReader("src\\a.txt");
        int ch;
        while((ch=fr.read())!=-1){
        System.out.print((char)ch);
        }
        fr.close();
    }
}

   有参:

import  java.io.*;
public  class test {
    public static void main(String[] args) throws IOException {
        FileReader fr=new FileReader("src\\a.txt");
        char[] s=new char[3];
        int len;
        while((len=fr.read(s))!=-1){
        System.out.print(new String(s,0,len));
        }
        fr.close();
    }
}

             2.FileWriter

其构造方法有

public FileWriter(File file)//创建字符输出流关联本地文件
public FileWriter(String pathname)//创建字符输出流关联本地文件
public FileWriter(File file,boolean append)//开启续写
public FileWriter(File pathway,boolean append)//开启续写

创建字符输出对象时候,参数是字符串表示的路径或者File对象都是可以的,因为在底层。如果传递的是字符串表示的路径,会自动new一个FIle对象。如果文件不存在会自动创建一个新的文件,但是要保证父级路径是存在的

成员方法有

void write(int c)//写出一个字符
void write(String str)//写出一个字符串
void write(String str,int off,int len)//写出一个字符串的一部分
void write(cahr[] chars)//写出一个字符数组
void write(char[] chars,int off,int len)//写出一个字符数组的一部分

如果write方法的参数是整数,但是实际上写到本地文件的是整数在字符集上对应的字符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

*kkkk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值