File类递归字节流

  • HashMap的特点是什么?
    • 是一个双列集合,里面的数据都是一个键+一个值,键唯一(不重复),键可以为NULL,只能有一个,值可以为NULL,可以有多个.
    • 无序(底层是由哈希表来控制键唯一的.)
  • 如何将一个键和一个值存储到HashMap中?
    • put(K key,V value) -> 先校验,如果集合中已经有了这个key,会覆盖掉之前的数据.
  • LinkedHashMap的特点是什么?
    • 有序(存储和取出顺序是一致的.)
  • TreeMap的特点是什么?
    • 有序(Map中的键会按照自然排序/字典排序的方式进行排列)
  • HashMap的遍历的方式都有哪几种?
    • 纵向遍历
      • 先获取所有的键的集合,然后获取每一个键,再通过get方法获取到这个键对应的值.
    • 横向遍历 ★
      • 先获取所有的键值对对象的集合,然后获取每一个键值对对象,再通过getKey和getValue方法获取到对应的数据.
  • Collections类是做什么用的?都有哪些常用方法?
    • Collections是单列集合的工具类.
      • sort() -> 排序.
      • reverse() -> 反转.
      • shuffle() -> 打乱.
  • 如何按照指定规则给List进行排序?
    • sort(List<?> list,Comparator c(匿名内部类来实现这个接口并且定义出排序规则))
A.File类概述和构造方法 6分54秒 掌握
  • 知识点总结与问题回顾

    • Java提供的File类是什么?

      • 文件/文件夹(目录路径名)的抽象表示 -> File里只是表示路径,它表示的文件/文件夹可以存在也可以不存在.
    • 初始化File类的三种构造方法都是哪三种?构造出来的File类结果有什么区别?

      • //String pathName(适合于操作单个文件)
        File f1 = new File("F:\\itheima\\爱莲说.txt");
        
        //String parent,String child(适合于在同一个文件夹下操作多个文件)
        String s = "F:\\itheima";
        File f2 = new File(s,"爱莲说.txt");
        
        //File parent,String child(适用于文件夹的复制)
        File f3 = new File("F:\\itheima");
        File f4 = new File(f3,"爱莲说.txt");
        
B.File类创建功能 9分47秒 掌握
  • 知识点总结与问题回顾
    • File类如何创建一个文件?
      • createNewFile(); -> 返回值:boolean 创建成功返回true,失败则返回false.
    • File类如何创建单级目录?可能会产生什么问题? -> Linux创建文件夹的命令.
      • mkdir(); -> 父目录一定是存在的.
    • File类如何创建多级目录?
      • mkdirs(); -> 创建多级目录.
    • 文件名和目录名重名,会出现什么问题?
      • 总会有一个无法创建.
  • 练习
    • 1.在自己的电脑中任意盘符中,创建文件:Itheima.txt
    • 2.在自己的电脑中任意盘符中,创建单级目录:ITCAST
    • 3.在自己的电脑中任意盘符中,创建多级目录:ITHEIMA//ITCAST
    • 4.在第2步完成之后相同盘符下,创建文件:ITCAST,查看结果是什么.
C.File类判断和获取功能 8分39秒 掌握
  • 知识点总结与问题回顾

    • File类的判断功能方法都有哪些?

      • 判断File是不是存在?
        • exists(); -> 返回值:boolean 存在返回true,不存在返回false.
      • 判断File是不是文件?
        • isFile(); -> 返回值:boolean 是文件的话返回true,不是文件返回false.
      • 判断File是不是文件夹/目录?
        • isDirectory(); -> 返回值:boolean 是文件夹返回true,不是文件夹返回false.
    • File类的获取功能都有哪些?

      • 获取File的绝对路径

        • getAbsolutePath(); -> 获取绝对路径(带盘符的路径)
      • 获取File的封装路径

        • getPath(); -> getPath方法获取到的路径就是在封装File的时候传入的路径.

        • //通过绝对路径封装一个File对象.
          File f1 = new File("G:\\Ab.Java就业班基础进阶课程源代\\Ah_File\\Test.txt");
          
          //通过模块下路径(相对路径)封装一个File对象.
          File f2 = new File("Ah_File\\Test.txt");
          
          System.out.println(f1.getPath());
          System.out.println(f2.getPath());
          
          
          //G:\Ab.Java就业班基础进阶课程源代码\Ah_File\Test.txt
          //Ah_File\Test.txt
          
      • 获取File的名称

        • getName(); -> 如果是文件的话,文件的后缀名称也会获取到.
      • 获取File目录下的文件/目录的字符串数组

        • list(); -> 返回一个字符串数组String[] 里面包含的是目录下所有文件/目录的名称.
      • 获取File目录下的文件/目录的File数组

        • listFiles();
    • 如果想获取IDEA模块下的文件,应该如何获取?需要注意什么问题?

  • 练习

    • 1.在当前模块下创建TestFile.txt,判断是否存在,如果存在,判断是文件还是目录,打印结果.
    • 2.获取TestFile.txt的绝对路径,路径,文件名称并打印.
    • 3.查看自己电脑任意盘符下的目录,获取目录下的所有目录和文件名称并打印.
    • 4.查看自己电脑任意盘符下的目录,获取目录下的所有目录和文件对象,如果是文件,则打印绝对路径,如果是目录,则打印路径.
D.File类删除功能 11分39秒 理解
  • 知识点总结与问题回顾
    • File类的删除方法是什么?可以帮我们删除什么内容?
      • delete() -> 删除文件夹/文件
    • 在创建文件的时候为什么要抛出IOException?什么情况下会出现IOEcxeption?
      • 因为创建文件的时候可能文件所在的目录并不存在.
      • 创建文件的时候要先确定文件所在的父目录是真实存在.
    • 在删除操作的时候,需要注意什么问题?
      • 删除目录的时候 -> 要先确定目录中没有其他的内容.
    • 物理删除/逻辑删除的区别?
      • 物理删除 -> 将信息从磁盘上抹去.
      • 逻辑删除 -> 不将信息从磁盘上抹去,而是屏蔽信息.
        • 你用花呗/借呗 -> 关停花呗/借呗,你的信息真的会被蚂蚁金服删除掉吗?
      • 蜜罐数据(5块钱查一次)
E.递归 9分13秒 了解
  • 知识点总结与问题回顾
    • 什么是递归?
      • 方法调用方法本身的操作.
    • 递归需要注意的问题是什么?
      • 给出一个出口.
F.递归求阶乘 7分51秒 练习
  • 练习
    • 使用递归求出12的阶乘和13的阶乘,查看一下结果,思考一下为什么会出现这种结果.
G.遍历目录 7分27秒 练习
  • 练习
    • 在自己电脑上的寻找任意目录,打印出这个目录下的所有文件的绝对路径.
H.IO流概述和分类 3分26秒 掌握 -> IO流和集合一样都是有体系的 -> Collection Map
  • 知识点总结与问题回顾
    • 什么是IO?
      • I -> Input -> 输入
      • O -> Output -> 输出
    • 什么是流?
      • 数据传输 -> 流.
        • 文件复制/文件上传/文件下载
    • IO流的分类按照流向如何分类?
      • 输入流/输出流
    • IO的分类按照类型如何分类?
      • 字节流/字符流
    • 字节流和字符流应该在什么情况下使用?
      • 文本文件使用字符流,其余文件一律使用字节流.
      • 字符流本质上没有读写数据的能力,字符流只是对字节流的包装.
I.字节流写数据 12分12秒 掌握
  • 知识点总结与问题回顾

    • 字节流相关的超类是哪两个?

      • InputStream/OutputStream
    • 如何初始化一个字节输出流?

      • FileOutputStream fos = new FileOutputStream(String pathName);
        
        FileOutputStream fos = new FileOutputStream(File file);
        
    • 字节流初始化的时候可以帮我们做什么事情?

      • 1.先判断这个文件存在还是不存在,不存在的话,会自动进行创建的操作.
        2.初始化fos字节输出流对象.
        3.将fos与文件进行一个绑定.
    • write方法的特点是什么?

      • 可以一次写一个字节的数据到文件中.
    • **使用完的字节流要做什么操作?如果不做这个操作会出现什么后果?(必须要牢记) **

      • 释放资源,close().
  • 练习

    • 创建一个字节流,向当前模块下的Hello.txt写入Hello.
J.字节流写数据的三种方式 12分04秒 掌握
  • 知识点总结与问题回顾
    • 字节流写入数据的三种方法都是什么?
      • write(int c) -> 写一个字节的数据到文件中.
      • write(byte[] bys) -> 写一个字节数组的数据到文件中 -> 字符串.getBytes();
      • write(byte[] bys,int off,int len) -> 写一个字节数组的一部分到文件中,从off位的索引开始写,写len个长度的数据(一般用于复制文件)
  • 练习
    • 使用字节流将"我爱Java"写入到模块下的Hello.txt文件中.
K.字节流写数据的两个小问题 7分35秒 掌握
  • 知识点总结与问题回顾
    • 字节流如何实现换行操作?
      • \r\n:Windows的换行符
      • \r:OSX的换行符
      • \n:Unix的换行符
    • 字节流如何实现追加写入功能?
      • 在创建字节输出流的时候给出第二个参数true,表示追加写入.
  • 练习
    • 在Hello.txt原内容的基础上,换行后追加写入"我爱编程"
L.字节流写数据加异常处理 6分33秒 掌握
  • 知识点总结与问题回顾
    • finally代码块是什么?可以完成什么事情?
      • 是跟在try…catch代码块之后的一个代码块.
        • 在try…catch代码块执行完之后,执行finally代码块.
        • 关闭资源(确保资源被正确关闭.)
    • finally代码块一定会执行吗? -> 面试题.
      • 不一定 -> 如果在执行之前关闭了Java虚拟机了,则不会执行.
    • 现阶段碰到的所有异常(编译期异常)都抛出.
M.字节流读数据(一次读一个字节数据) 11分58秒 掌握
  • 知识点总结与问题回顾

    • 如何初始化一个字节输入流?

      • FileInputStream fis = new FileInputStream(String pathName/File file);
        
    • 如何使用字节输入流读取一个字节的数据?

      • read(); 返回值:int
    • 如何使用字节输入流一次读取多个数据?(while的条件如何理解?)

      • //死格式 -> 不管我们之后学习什么样的流,归根结底格式都是一样的.
        int by; //用于接收每次读取到的数据.
        while((by = fis.read()) != -1){
            by;
        }
        
    • 字节输入流读取内容的返回的int值应该如何理解?

      • int值就是每次读取到的一个字节的数据.
N.字节流复制文本文件 4分9秒 练习 -> 一次读取一个字节的数据做出来.
  • 练习
    • 使用字节流将将Read.txt复制到任意盘符下.
O.字节流读数据(一次读一个字节数组数据) 10分23秒 掌握
  • 知识点总结与问题回顾

    • FileInputStream的read方法,有参数和没参数返回的int值的区别是什么?

      • int by; //用于接收每次读取到的数据.
        while((by = fis.read()) != -1){
            by;
        }
        
        int len;
        byte[] bys = new byte[1024];
        while((len = fis.read(bys))!=-1){
            bys;
        }
        
        //如果一次读取的是一个字节的数据,那么返回值就是读取到的数据,如果读取到文件的末尾,则返回-1.
        
        //如果一次读取的是一个字节数组的数据,那么返回值本次读取到的数据的有效个数,如果读到了末尾,还是返回-1.
        
    • 使用FileInputStream如何读取一个字节数组的数据,可能会出现什么问题?

      • 无效内容.
    • 想要解决上一个问题,应该使用什么方法?

      • 灵活使用返回值len.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值