JAVA学习笔记21.12.5(参考黑马程序员B站视频)

IO流

一、字节流读数据(一个一个读)

        1.需求

        把文件中的内容读取出来并在控制台显示。

        2.方法

        1)FileInputStream(String name):通过打开与实际文件的连接来创建一个FileInputStream,该文件由系统文件中的路径名name命名。

        2)int read():读取文件的一个字节数据,读到-1时表示到了文件末尾。

        3.步骤

  • 创建字节输入流对象
  • 调用字节输入流对象的读数据方法
  • 释放资源

二、案例一

        1.需求

        复制文本文件

        2.分析

  • 复制文本文件其实就是把文本文件的内容从一个文本文件中读取出来(数据源),然后写到另一个文件中(目的地)
  • 数据源:读取数据,FileInputStream
  • 目的地:写数据,FileOutputStream

        3.思路

  • 根据数据源创建字节输入流
  • 根据目的地创建字节输出流
  • 读写数据,复制文本,一次读取一个字节并写一个字节
  • 释放资源

        4.代码实现

package IOStudy;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo3 {
    public static void main(String[] args) throws IOException {
        //根据数据源创建字节输入流对象
        FileInputStream fis = new FileInputStream("D:\\_A\\B\\D.txt");

        //根据目的地创建字节输出流对象
        FileOutputStream fos = new FileOutputStream("D:\\_A\\C\\D.txt");

        //读写数据
        int by;
        while ((by = fis.read()) != -1){
            fos.write(by);
        }
        //释放资源
        fis.close();
        fos.close();
    }
}

三、 字节流读数据(一次读一个字节数据数组)

  1.需求

        把文件中的内容读取出来并在控制台显示。

        2.方法

        1)FileInputStream(String name):通过打开与实际文件的连接来创建一个FileInputStream,该文件由系统文件中的路径名name命名。

        2)int read(byte[] b):从该输入流读取最多b.length个字节数据到一个数组,返回的是读取到的数组长度,当返回-1时表示文件读取结束。

        3.步骤

  • 创建字节输入流对象
  • 调用字节输入流对象的读数据方法
  • 释放资源

四、案例二

        1.需求

        复制图片

        2.思路

  • 根据数据源创建字节输入流
  • 根据目的地创建字节输出流
  • 读写数据,复制文本,一次读取一个字节数组的数据,一次一个字节数组数据
  • 释放资源

        3.代码实现

package IOStudy;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo5 {
    public static void main(String[] args) throws IOException {
        //根据数据源创建字节输入流对象
        FileInputStream fis = new FileInputStream("D:\\_A\\B\\abc.png");

        //根据目的地创建字节输出流对象
        FileOutputStream fos = new FileOutputStream("D:\\_A\\C\\abc.png");

        //读写数据
        byte[] bys = new byte[1024];
        int len ;
        while ((len = fis.read(bys)) != -1 ){
            fos.write(bys,0,len); //从0开始写到读取到的最后一个
        }
        //释放资源
        fis.close();
        fos.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值