明年此日青云去,却笑人间举子忙
—— 24.6.4
知识回顾
1 .HashMap
a.特点:无序,无索引,key唯一,线程不安全,可以存null键null值
b.数据结构:哈希表
c.方法:put remove get keyset entryset values containsKey2.LinkedHashMap :
a.特点:有序,无索引,key唯一,线程不安全,可以存null键null值
b.数据结构:哈希表+双向链表
3.key如何去重复:重写hashcode和equals方法4.Treeset:是set接口实现类
a.特点:对元素排序,无索引,元素唯一,线程不安全,不可以存null键null值
b.构造:
Treeset()
Treeset(Comparator c)5 .TreeMap :
a.特点:对 key排序,无索引,key唯一,线程不安全,不可以存null键null值
b.构造:
TreeMap()
TreeMap(Comparator c)I6.Hashtable:是map接口的实现类
a.特点:无序,无索引,key唯一,线程安全,不能存null键null值
b.用法:和HashMap一样
c.数据结构:哈希表7.Vector:
a、特点:有序、有索引、元素可重复、线程安全
b、数据结构:数组
8.Properties:是Hashtable的子类
a、特点:无序,无索引,key唯一,线程安全,不能存null键,null值,key和value都是String类型的
b、特有方法:
setProperty
getProperty
stringPropertyNames
load(IO流对象) —> 将流中数据加载到集合中
一、File类
1.File类
概述:
文件和目录(文件夹)路径名的抽象表示
简单理解:
我们在创建File对象的时候,需要创建一个路径,这个路径指定为哪个文件或者文件夹上,我们的File就代表哪个对象 File file = new File("E:\Idea\io\File\1.jpg")
二、File类使用
1.File的静态成员
static String pathseparator:与系统有关的路径分隔符,为了方便,它被表示为一个字符串。 static String separator:与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
import java.io.File;public class Demo259File {public static void main(String[] args) {file01();System.out.println(file02());}// 将来写代码如何正确编写一个路径用java代码private static String file02() {String path1 = "D:\\2LFE\\Desktop\\java\\一切都会好的.txt";return path1;}private static void file01() {// static String pathseparator:与系统有关的 路径分隔符,为了方便,它被表示为一个字符串。String pathSeparator = File.pathSeparator;System.out.println(pathSeparator);// static String separator:与系统有关的 默认名称分隔符,为了方便,它被表示为一个字符串。String separator = File.separator;System.out.println(separator);}
}
2.File的构造方法
① File(String parent,String child)
File(String parent,String child) —> 根据所填写的路径创建File对象
parent:父路径
child:子路径
② File(File parent, String child)
File(File parent, String child) —> 根据所填写的路径创建File对象
parent:父路径,是一个File对象
child:子路径
③ File(String pathname)
File(String pathname) —> 根据所填写的路径创建File对象
pathname:直接指定路径
import java.io.File;public class Demo260FileMethod {public static void main(String[] args) {// File(String parent,String child)根据所填写的路径创建File对象File file1 = new File("D:\\2LFE\\Desktop\\java","一切都会好的.txt");System.out.println("file1: " + file1);// File(File parent, String child)根据所填写的路径创建File对象File parent = new File("D:\\2LFE\\Desktop\\java");File file2 = new File(parent,"一切都会好的.txt");System.out.println("file2: " + file2);// File(String pathname)根据所填写的路径创建File对象File file3 = new File("D:\\2LFE\\Desktop\\java\\一切都会好的.txt");System.out.println("file3: " + file3);}
}
细节:我们创建File对象的时候,传递的路径可以是不存在的,但是传递不存在的路径没啥意义
3.File的获取方法
String getAbsolutePath() —> 获取File的绝对路径 —> 带盘符的路径
String getPath() —> 获取的是封装路径 —> new File对象的时候写的啥路径,获取的就是啥路径
String getName() —> 获取的是文件或者文件夹名称
long length() —> 获取的是文件的长度 —> 文件的字节数
import java.io.File;public class Demo261FileGetMethod {public static void main(String[] args) {// String getAbsolutePath() —> 获取File的绝对路径 —> 带盘符的路径File file1 = new File("一切都会好的.txt");System.out.println("file1.getAbsolutePath() = " + file1.getAbsolutePath());// String getPath() —> 获取的是封装路径->new File对象的时候写的啥路径,获取的就是啥路径File file2 = new File("sjkjsk");System.out.println("file2.getPath() = " + file2.getPath());// String getName() —>获取的是文件或者文件夹名称File file3 = new File("E:\\java Sgg\\JavaAllWillBest\\我一直相信");System.out.println("file3.getName() = " + file3.getName());// long length() —> 获取的是文件的长度 —> 文件的字节数File file4 = new File("D:\\2LFE\\Desktop\\java\\一切都会好的.txt");System.out.println("file4.lenth() = " + file4.length()); // 15 字节 (15 字节)}
}
4.File的创建方法
boolean createNewFile() —> 创建文件
如果要创建的文件之前有,创建失败,返回false
如果要创建的文件之前没有,创建成功,返回true
boolean mkdirs() —> 创建文件夹(目录),既可以创建多级文件夹,还可以创建单级文件夹
如果要创建的文件夹之前有,创建失败,返回false
如果要创建的文件夹之前没有,创建成功,返回true
import java.io.File;
import java.io.IOException;public class Demo262FileCreMethod {public static void main(String[] args) throws IOException {// boolean createNewFile() —> 创建文件// 如果要创建的文件之前有,创建失败,返回false// 如果要创建的文件之前没有,创建成功,返回trueFile file1 = new File("D:\\2LFE\\Desktop\\java\\一切都会好的.txt");System.out.println("file1.createNewFile() = " + file1.createNewFile());// boolean mkdirs() —> 创建文件夹(目录)既可以创建多级文件夹,还可以创建单级文件夹// 如果要创建的文件夹之前有,创建失败,返回false// 如果要创建的文件夹之前没有,创建成功,返回trueFile file2 = new File("D:\\2LFE\\Desktop\\java\\我一直相信\\一切都会好的");System.out.println("file2.mkdirs() = " + file2.mkdirs());}
}
5.File类的删除方法
boolean delete() —> 删除文件或者文件夹
注意:
删除文件不走回收站,慎用
如果删除文件夹,必须是空文件夹,且不走回收站
import java.io.File;public class Demo263FileDelMethod {public static void main(String[] args) {// boolean delete() —> 删除文件或者文件夹File file = new File("一切都会好的");System.out.println(file);System.out.println(file.delete());File file1 = new File("D:\\2LFE\\Desktop\\java\\我一直相信");System.out.println("file2.delete(): " + file1.delete());File file2 = new File("D:\\2LFE\\Desktop\\java\\我一直相信\\一切都会好的");System.out.println("file2.delete(): " + file2.delete());}
}
6.File类的判断方法
boolean isDirectory() —> 判断是否为文件夹
boolean isFile() —> 判断是否为文件
boolean exists() —> 判断文件或者文件夹是否存在
import java.io.File;public class Demo264FileJudMethod {public static void main(String[] args) {// boolean isDirectory() —> 判断是否为文件夹File file1 = new File("D:\\2LFE\\Desktop\\java\\一切都会好的.txt");System.out.println("file1.isDirectory() = " + file1.isDirectory());// boolean isFile() —> 判断是否为文件System.out.println("file1.isFile() = " + file1.isFile());// boolean exists() —> 判断文件或者文件夹是否存在System.out.println("file1.exists() = " + file1.exists());}
}
7.File类的遍历方法
注:只遍历一级文件夹
String[] list() —> 遍历指定的文件夹,返回的是String数组
File[] listFiles() —> 遍历指定的文件夹,返回的是File数组 —> 这个推荐使用(方法底层最终还是调用list方法遍历文件夹返回一个String数组,遍历数组,将数组中的内容一个个存储在File对象中,我们再将File对象存放在File数组中)
import java.io.File;public class Demo265FileForMethod {public static void main(String[] args) {// String[] list() —> 遍历指定的文件夹,返回的是String数组File file1 = new File("D:\\QQMusicCache");String[] list = file1.list();for (String s : list) {System.out.println(s);}System.out.println("————————————————————————————————");// File[] listFiles() —> 遍历指定的文件夹,返回的是File数组 —> 这个推荐使用File[] files = file1.listFiles();for (File file : files) {System.out.println(file);}}
}
8.相对路径和绝对路径
① 绝对路径:
从盘符开始写的路径
eg:E:\lideallioll1.txt
② 相对路径:
不从盘符名开始写的路径
③ 针对idea中写相对路径:
a.口诀:哪个路径是参照路径,哪个路径就可以省略不写,剩下的就是在idea中的相对路径写法
在idea中参照路径其实就是当前project的绝对路径
b.比如:在module21下创建了一个1.txt
先找1.txt的绝对路径:E:\Idealidea2022\workspace\javase\module21\1.txt
再找参照路径:E:\Idealidea2022\workspace\javase参照路径可以省略:module21\1.txt
④ 总结:
在idea中写的相对路径,其实就是从模块名开始写
⑤ 注意:
如果直接写一个文件名1.txt,它所在的位置默认是在当前project下