- HashMap的特点是什么?
- 是一个双列集合,里面的数据都是一个键+一个值,键唯一(不重复),键可以为NULL,只能有一个,值可以为NULL,可以有多个.
- 无序(底层是由哈希表来控制键唯一的.)
- 如何将一个键和一个值存储到HashMap中?
- put(K key,V value) -> 先校验,如果集合中已经有了这个key,会覆盖掉之前的数据.
- LinkedHashMap的特点是什么?
- 有序(存储和取出顺序是一致的.)
- TreeMap的特点是什么?
- 有序(Map中的键会按照自然排序/字典排序的方式进行排列)
- HashMap的遍历的方式都有哪几种?
- 纵向遍历
- 先获取所有的键的集合,然后获取每一个键,再通过get方法获取到这个键对应的值.
- 横向遍历 ★
- 先获取所有的键值对对象的集合,然后获取每一个键值对对象,再通过getKey和getValue方法获取到对应的数据.
- 纵向遍历
- Collections类是做什么用的?都有哪些常用方法?
- Collections是单列集合的工具类.
- sort() -> 排序.
- reverse() -> 反转.
- shuffle() -> 打乱.
- Collections是单列集合的工具类.
- 如何按照指定规则给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(); -> 创建多级目录.
- 文件名和目录名重名,会出现什么问题?
- 总会有一个无法创建.
- File类如何创建一个文件?
- 练习
- 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类的获取功能都有哪些?
-
获取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块钱查一次)
- File类的删除方法是什么?可以帮我们删除什么内容?
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的分类按照类型如何分类?
- 字节流/字符流
- 字节流和字符流应该在什么情况下使用?
- 文本文件使用字符流,其余文件一律使用字节流.
- 字符流本质上没有读写数据的能力,字符流只是对字节流的包装.
- 什么是IO?
I.字节流写数据 12分12秒 掌握
-
知识点总结与问题回顾
-
字节流相关的超类是哪两个?
- InputStream/OutputStream
-
如何初始化一个字节输出流?
-
FileOutputStream fos = new FileOutputStream(String pathName); FileOutputStream fos = new FileOutputStream(File file);
-
-
字节流初始化的时候可以帮我们做什么事情?
- 1.先判断这个文件存在还是不存在,不存在的话,会自动进行创建的操作.
2.初始化fos字节输出流对象.
3.将fos与文件进行一个绑定.
- 1.先判断这个文件存在还是不存在,不存在的话,会自动进行创建的操作.
-
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代码块.
- 关闭资源(确保资源被正确关闭.)
- 是跟在try…catch代码块之后的一个代码块.
- finally代码块一定会执行吗? -> 面试题.
- 不一定 -> 如果在执行之前关闭了Java虚拟机了,则不会执行.
- 现阶段碰到的所有异常(编译期异常)都抛出.
- finally代码块是什么?可以完成什么事情?
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.
-