文件字符输入流,文件字符输出流

1.文件字符输入流,文件字符输出流都可以写数据
2.方便性不一样

  • 字节流适合做一切文件数据的拷贝(文本文件,图片,音频,视频)
  • 字节流不适合读取中文内容输出
  • 字符流适合做文本文件的操作(读,写)
  • 文件字符输入流
package com.heima.test;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class ReaderTest {
    public static void main(String[] args) throws IOException {

        Reader fr = new FileReader("src/reader.txt");
 /*
       //汉字做为一个字符读取,不会乱码
       //每次读取一个字符
        int code = fr.read();
        System.out.println(code);
        System.out.println((char) code);

        int code1 = fr.read();
        System.out.println(code1);
        System.out.println((char) code1);

        */

        int a;
        if ((a = -1) != 12) {

        }

        int code;
        while ((code = fr.read()) != -1) {
            System.out.print((char) code);
        }

        //读取中文的最好的方法了,不乱码,性能好
        Reader fr1 = new FileReader("src/reade1r.txt");

        //一次读取一个字符数组
        char[] buffer = new char[1024];//1K字符,不是1KB,因为中文字符占2-3个字节,实际会远远大于1kb
        //最后一桶装不满,读多少倒多少
        int len;
        //read方法返回读取的字符个数,没有可读取的返回-1
        while ((len = fr1.read(buffer)) != -1) {
            String rs = new String(buffer, 0, len);
            System.out.print(rs);
        }

    }
}


  • 文件字符输出流
package com.heima.test;

import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class WriterDemo {
    public static void main(String[] args) throws IOException {

        //Writer fw = new FileWriter("src/writer.txt");//覆盖管道,每次启动都会清空文件之前的数据
        Writer fw = new FileWriter("src/writer.txt",true);//追加数据

        //写一个字符出去
        fw.write(98);
        fw.write('a');
        fw.write('李');
        fw.write("\r\n");//换行

        //写字符串
        fw.write("我是中国人" );
        fw.write("\r\n");//换行


        //写一个字符数组,直接写字符串就行
        char[] chars = "abc我是中国人".toCharArray();
        fw.write(chars);
        fw.write(new char[]{'e','f','g'});
        fw.write("\r\n");//换行


        //写字符串的一部分进去
        fw.write("abc我是中国人",0,3);
        fw.write("\r\n");//换行


        //写字符数组的一部分进去
        fw.write(chars,3,5);
        fw.write("\r\n");//换行


        //fw.flush();刷新后流还可以使用
        fw.close();//包含刷新,关闭后流无法使用
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值