IO字符流

IO字符流

简述:
IO字符流也分字符输入流,字符输出流。字符流和字节流的主要区别是,字节流可以读取任意格式的文件,字符流只能读取文本文件,但是字符流读取文本文件比字节流更加方便,不需要考虑太多转码的问题。

字符输入流主要涉及的类:
FileReader(基本字符输入流)
BufferedReader(字符缓冲输入流)
Reader是上面两者的父类

FileReader方法摘要:
在这里插入图片描述
FileReader实现:

//1、创建源
        File file = new File("D:\\X1000.txt");
        //2、创建字符输出流对象
        Reader in = new FileReader(file);
        //3、具体的 IO 操作
            /***
             * int read():每次读取一个字符,读到最后返回 -1
             * int read(char[] buffer):将字符读进字符数组,返回结果为读取的字符数
             * int read(char[] buffer,int off,int len):将读取的字符存储进字符数组 buffer,返回结果为读取的字符数,存放位置从索引 off 开始,长度为 len
             *
             */
        //int read():每次读取一个字符,读到最后返回 -1
        int len = -1;//定义当前读取字符的数量
        while((len = in.read())!=-1){
            //打印 a.txt 文件中所有内容
            System.out.print((char)len);
        }
         
        //int read(char[] buffer):将字符读进字符数组
        char[] buffer = new char[10]; //每次读取 10 个字符
        while((len=in.read(buffer))!=-1){
            System.out.println(new String(buffer,0,len));
        }
         
        //int read(char[] buffer,int off,int len)
        while((len=in.read(buffer,0,10))!=-1){
            System.out.println(new String(buffer,0,len));
        }
        //4、关闭流资源
        in.close();

字符输出流涉及的类:
FileWriter(基本字符输出流)
BufferedWriter(字符缓冲输出流)
Writer是上面两者的父类

FileWriter方法摘要
在这里插入图片描述
FileWriter类使用

//1、创建源
        File file= new File("D:\\X1000.txt");
        //2、创建字符输出流对象
        Writer out = new FileWriter(file);
        //3、具体的 IO 操作
            /***
             * void write(int c):向外写出一个字符
             * void write(char[] buffer):向外写出多个字符 buffer
             * void write(char[] buffer,int off,int len):把 buffer 数组中从索引 off 开始到 len个长度的数据写出去
             * void write(String str):向外写出一个字符串
             */
        //void write(int c):向外写出一个字符
        
        out.write(65);//将 A(65代表字符A) 写入 X1000.txt 文件中
        //void write(char[] buffer):向外写出多个字符 buffer
        out.write("小白说".toCharArray());//将 小白说 写入 X1000.txt 文件中
        
        //void write(char[] buffer,int off,int len)
        out.write("小白说Java".toCharArray(),3,4);//将 Java 写入X1000.txt文件中
        
        //void write(String str):向外写出一个字符串
        out.write("小白说");//将小白说 写入 X1000.txt 文件中
         
        //4、关闭流资源
        /***
         * 注意如果这里有一个 缓冲的概念,如果写入文件的数据没有达到缓冲的数组长度,那么数据是不会写入到文件中的
         * 解决办法:手动刷新缓冲区 flush()
         * 或者直接调用 close() 方法,这个方法会默认刷新缓冲区
         */
        out.flush();
        out.close();

输出流特别说明:
不论是字节输出流FileOutputStream,还是字符输出流FileWrrter,其对象初始化时均有一个可选参数append,此参数控制是否要对写入文件进行覆盖,默认是覆盖的,所以如果不想对源文件覆盖,而仅仅是追加信息,则需将append参数设置为true。

使用输入输出流进行文件复制:

//将a.txt的文件内容复制到b.txt
  public static void main(String[] args) throws IOException {
        //1、定义源文件
        File srcFile = new File("D:\\a.txt");
        File descFile = new File("D:\\b.txt");
        //2、如果本地没有这个文件,可以在这里创建
        srcFile.createNewFile();
        descFile.createNewFile();

        //3、创建字符输入输出流对象
        Reader in = new FileReader(srcFile);
        Writer out = new FileWriter(descFile);
        //4、读取和写入操作
        char[] buffer = new char[10];//创建一个容量为 10 的字符数组,存储已经读取的数据
        int len = -1;//表示已经读取了多少个字节,如果是 -1,表示已经读取到文件的末尾
        while ((len = in.read(buffer)) != -1) {
            out.write(buffer, 0, len);
        }
        //5、关闭流资源
        out.close();
        in.close();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值