Java中的字符流(基础解析)

字符流

字符输出流

    一个字符一个字符的读
    注意: 只能用来操作文本(不能写图片 音频 视频)
    Writer(所有字符输出流的 父类 抽象类)

    FileWriter(专门用来写文本)
    构造方法(帮顶谢入的路径):
        文件
        字符串

    Mac系统下 一个中文字符 占 3个字节 
    默认的使用UTF-8的编码表(通用的编码表)

    Windows系统下 一个中文字符 占两个字节
    默认使用的GBK的编码表(简体中文)
    public class Demo04 {
    public static void main(String[] args) throws IOException {
        FileWriter fWriter = new FileWriter("/Users/s/Desktop/Test/hh.txt");
        fWriter.write(100);
        // 注意 字符输出流 在写入文件的时候
        // 需要调用刷新方法
        // 建议:每次写入 最好都刷新一次
        fWriter.flush();
        // 字符数组写入
        char[] c = {'a','b','c'};
        fWriter.write(c);
        fWriter.flush();

        fWriter.write(c, 1, 2);
        fWriter.flush();

        // 使用字符串直接写入
        fWriter.write("你好\n");
        fWriter.flush();

        fWriter.write("吃了么\n");
        fWriter.flush();
        fWriter.write("天气真好\n");
        fWriter.flush();

        fWriter.write("下次再见", 1, 2);
        fWriter.flush();

        // 关闭资源前 会刷新
        fWriter.close();

    }
}

字符输入流

    Reader(所有字符输入流的父类 抽象类)

    写的时候可以直接写入字符串
    读的时候不可以
    因为字符串很难界定到哪儿结束
    a asd 1 都是字符串
    所有者与不太容易判断一个字符串

    FileReader
    ublic class Demo05 {
    public static void main(String[] args) throws IOException {
        FileReader fReader = new FileReader("/Users/s/Desktop/Test/hh.txt");
        //循环读取
        int len = 0;
//      while ((len = fReader.read()) != -1) {
//          System.out.println((char)len);
//      }

        char[] b = new char[1024];
        while ((len = fReader.read(b)) != -1) {
            System.out.println(new String(b, 0, len));
        }

        fReader.close();
    }
}
利用字符流复制文件(带异常处理)
    public class Demo {
    public static void main(String[] args) {
        File oldFile = new File("/Users/s/Desktop/Test/hh.txt");
        File newFile = new File("/Users/s/Desktop/Test/hh1.txt");
        copyFile(oldFile, newFile);

    }
    public static void copyFile(File oldFile,File newFile) {
        FileReader oldFRead = null;
        FileWriter newWrite = null;
        try {
            oldFRead = new FileReader(oldFile);
            newWrite = new FileWriter(newFile);

            int len = 0;

            char[] b = new char[1024];
            while ((len = oldFRead.read(b)) != -1) {
                newWrite.write(b, 0, len);
            }
        } catch (FileNotFoundException e) {
            throw new RuntimeException("文件找不到");
        } catch (IOException e) {
            throw new RuntimeException("复制失败");
        }finally {
            try {
                if (oldFRead != null) {
                    oldFRead.close();
                }
            } catch (IOException e) {
                throw new RuntimeException("关闭资源失败");
            }finally {
                try {
                    if (newWrite != null) {
                        newWrite.close();
                    }
                } catch (IOException e) {
                    throw new RuntimeException("关闭资源失败");
                }
            }   
        }
    }
}


                                        Day.25

http://blog.csdn.net/ssssssue

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值