24.IO流(1)

一、IO流概述

 

 

 二、IO流-字节流

1.文件字节输入流

每次读取一个字节 

        //1.创建文件字节输入流管道,与源文件接通
        InputStream is = new FileInputStream("file-io-app\\src\\messi.txt");//简化写法

        //2.开始读取文件的字节数据
        //read:每次读取一个字节返回,如果没有数据了返回-1
        //int b1 = is.read();
        //System.out.println((char) b1);

        //int b2 = is.read();
        //System.out.println((char) b2);

        //3.使用循环改进上述代码
        int b;
        while((b = is.read()) != -1){
            System.out.print((char) b);
        }

        //读取数据的性能差
        //读取汉字输出会乱码
        //流使用完毕后必须关闭,释放系统资源
        is.close();
        

 每次读取多个字节

        byte[] buffer = new byte[3];
        int len;//记住每次读取多少个字节
        while((len = is.read(buffer)) != -1){
            String rs = new String(buffer,0,len);
            System.out.print(rs);
        }
        is.close();

一次读取全部字节

        //1.一次性读取完文件的全部字节到一个字节数组中去
        FileInputStream is = new FileInputStream("file-io-app\\src\\cris3.txt");

//      方法一:
        File f = new File("file-io-app\\src\\cris3.txt");
        long size = f.length();
        byte[] buffer = new byte[(int)size];

        int len = is.read(buffer);
        System.out.println(new String(buffer));

//      方法二:
        byte[] buffer = is.readAllBytes();
        System.out.println(new String(buffer));

2.文件字节输出流

        //1.创建一个字节输出流管道与目标文件接通
        //该管道会覆盖之前的数据
        //OutputStream os = new FileOutputStream("file-io-app/src/cris4.txt");
        //追加数据管道:会在原数据之后继续生成新的数据
        OutputStream os = new FileOutputStream("file-io-app/src/cris4.txt",true);
        
        //2.开始写字节数据出去
        //一次性输出一个字节出去
        os.write(97);
        os.write('b');

        //一次性输出多个字节出去
        byte[] bytes = "我爱你中国".getBytes();
        os.write(bytes);
        
        os.write(bytes,0,15);//"我爱你中国"

        //换行符
        os.write("\r\n".getBytes());

        os.close();

 三、释放资源的方式

1.try-catch-finally

2.try-catch

       try (
                //1.创建字节输入流管道
                InputStream is = new FileInputStream("E:/文件/ME.jpg");
                //2.创建字节输出流管道
                OutputStream os = new FileOutputStream("D:/ME.jpg");
                ){
            //3.创建一个字节数组
            byte[] buffer = new byte[1024];
            //4.从字节输入流中读取数据,写出去到字节输出流中,读多少写多少
            int len;
            while ((len = is.read(buffer)) != -1){
                os.write(buffer,0,len);
            }
            System.out.println("复制成功");
        } catch (IOException e) {
            e.printStackTrace();
        }

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值