Java--IO流

IO流概述

  • IO流用来处理设备之间的数据传输
  • Java对数据的操作是通过流的方式

IO流的分类

  • 按数据流向
      输入流:读入数据
      输出流:写出数据
  • 按数据类型
      字节流:可传输任意类型的文件
      字符流:适合传输文本类型的文件

常用IO流关系图

IO流

字节流的复制文件操作

  • FileInputStream & FileOutputStream
    @Test
    public void test1() throws IOException {
        InputStream in = new FileInputStream("D:/QQWhatsnew.txt");

        OutputStream out = new FileOutputStream("out.txt");

        byte[] bytes = new byte[1024];
        int len;
        while ((len=in.read(bytes))!=-1){
            out.write(bytes,0,len);
        }
        
        out.close();
        in.close();
    }
  • BufferedInputStream & BufferedOutputStream

注:BufferedInputStream ,BufferedOutputStream对字节流进行了包装,实现了缓冲区功能

    @Test
    public void test2() throws IOException {
        BufferedInputStream in = new BufferedInputStream(
                new FileInputStream("D:/QQWhatsnew.txt"));

        BufferedOutputStream out = new BufferedOutputStream(
                new FileOutputStream("out2.txt"));

        byte[] bytes = new byte[1024];
        int len;
        while ((len=in.read(bytes))!=-1){
            out.write(bytes,0,len);
        }

        out.close();
        in.close();
    }

字符流复制文件操作

注:D:/QQWhatsnew.txt的编码为UTF-8

  • FileReader & FileWriter
    @Test
    public void test3() throws IOException {
        Reader reader = new FileReader("D:/QQWhatsnew.txt");

        Writer writer = new FileWriter("out3.txt");

        char[] chars = new char[1024];
        int len;
        while ((len=reader.read(chars))!=-1){
            writer.write(chars,0,len);
        }

        writer.close();
        reader.close();
    }
  • BufferedReader & BufferedWriter
    注:BufferedReader ,BufferedWriter对字符流进行了包装,实现了缓冲区功能
    @Test
    public void test4() throws IOException{
        BufferedReader reader = new BufferedReader(
                new FileReader("D:/QQWhatsnew.txt"));

        BufferedWriter writer = new BufferedWriter(
                new FileWriter("out4.txt"));

        char[] chars = new char[1024];
        int len;
        while ((len=reader.read(chars))!=-1){
            writer.write(chars,0,len);
        }

        writer.close();
        reader.close();
    }

将字节流转换为字符流

  • 不指定编码
    @Test
    public void test5() throws IOException {
        Reader reader = new InputStreamReader(
                new FileInputStream("D:/QQWhatsnew.txt"));

        Writer writer = new OutputStreamWriter(
                new FileOutputStream("out5.txt"));

        char[] chars = new char[1024];
        int len;
        while ((len=reader.read(chars))!=-1){
            writer.write(chars,0,len);
        }

        writer.close();
        reader.close();
    }
  • 指定编码

这样 out6.txt 就以GBK的编码方式查看

    @Test
    public void test6() throws IOException {
        Reader reader = new InputStreamReader(
                new FileInputStream("D:/QQWhatsnew.txt"),"Utf-8");
		
        Writer writer = new OutputStreamWriter(
                new FileOutputStream("out6.txt"),"GBK");

        char[] chars = new char[1024];
        int len;
        while ((len=reader.read(chars))!=-1){
            writer.write(chars,0,len);
        }

        writer.close();
        reader.close();
    }
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值