Day 21开篇:
"今天基础开课主要学习了Collections的概念,Collections和Collection的区别,常用工具,File的概念,构造方法, 关于路径的问题,创建功能,删除功能,重命名功能,判断功能,获取功能等。 "
知识点反馈:
今天的知识点总结的思维导图
一.Collections
1. 概念:
针对集合操作的工具类,都是静态方法
2. Collections和Collection的区别:
Collections:是集合进行工具操作的类,比如集合排序二分查找等等
Collection:是单列集合的父类,有List和Set的子接口
3. list的元素进行自然排序:
方式一:将list的集合取出来放到TreeSet当中进行排序,然后根据排序顺序取出放置到list集合当中
方式二:将list的集合转换为数组,使用数组的排序规则进行排序
方式三:使用集合的工具Collections的sort进行排序
4. 常用工具:
static <T> int binarySearch(List<?> list, T key):对集合进行二分查找
static <T> void sort(List<T> list):对集合进行自然排序
static <T> T max(Collection<?> list):查找集合的最大值(同理有最小值)
static <T> void reverse(List<?> list):对元素进行反转 shuffle
static <T> void shuffle(List<?> list):对集合的元素进行随机置换
static <T> XXX<T> synchronizedXXX(XXX<T> s):对线程不安全的集合改变为线程安全
二.File
1. 概念:
文件和目录路径名的抽象表示形式,与平台无关。(File操作并不是一个真正的文件,只是一个路径而已)File他能够对文件(目录)进行新建、删除、重命名等相关操作,但是File不能对文件的内容进行任何的访问操作。如果要对一个文件的具体内容进行操作需要使用input/output这两个操作(I/O)
2.构造方法:
(1)File(String pathname):
以pathname为路径名创建一个新的File对象,可以是绝对路径也可以是相对路径。
如果pathname是一个相对路径,则默认以项目为中心进行存储
如果pathname是一个绝对路径,则以计算机的具体盘符路径进行存储
(2)File(File parent, String child):
根据一个file对象存在的目录,拼接一个新的字符串路径,构建另一个新的路径
File f1 = "c://学习//"
String str = "资料"
f1,str = "C://学习//资料"
(3)File(String parent, String child):
根据 parent路径名字符串和child路径名字符串创建一个新File 实例。
parent = "c://学习//";
child = "资料";
parent,child = "C://学习//资料";
3.关于路径的问题:
(1)java当中的"\"是一个转义字符,会对后面的内容进行转义,如果说你"\"代表的是下级目录请使用"\\"代替
(2)路径分割和操作系统有严格的区分
windows或者dos系统默认使用"\"来进行表示下一级目录
Unix和mac使用"/"来进行表示下一级
Java的是一个跨平台的语言,所以一定要考虑你使用的下一级的符号是不是能够兼容所操作的平台
4.如何处理平台路径标识不一样的问题:
(1)解决方法一:先判断操作系统,在决定使用什么样的分隔符
String s= System.getProperty("os.name");
System.out.println(s);
if(s.equals("Mac OS X")){
File f = new File("/Users/TOOBUG/Desktop/");
}else if(s.equals("Windows 10 NT")){
File f = new File("\\Users\\TOOBUG\\Desktop\\");
}
(2)解决方法二:File.separator;根据系统环境自动动态的匹对对应的分割符
5.创建功能:
(1)boolean createNewFile():创建一个新的文件,如果文件不存在自动创建,已经存在不在创建
(2)boolean mkdir():创建一个目录,如果已经存在则不再创建
(3)boolean mkdirs():创建多层文件夹,如果上一级文件夹不存在则自动创建
举例:
public class Demo03 {
public static void main(String[] args) throws Exception {
//准备路径对象
File file = new File("/Users/TOOBUG/Desktop/io操作/sss/ssss/sssss/ssssss/");
//创建目录下面文件,文件的创建根据你的file对象来
System.out.println("创建文件:"+file.createNewFile());
//创建目录【如果父级文件夹不存在则产生异常 IOException:系统找不到指定路径】
//System.out.println("创建目录:"+file.mkdir());
//创建多级目录
//System.out.println("创建多级目录:"+file.mkdirs());
}
}
6.删除功能:
(1)boolean delete():可以删除某一个目录或者文件
(2)注意事项:
a.删除目录只能删除为空的目录
b.所有的删除是物理删除,不走回收站
7.重命名功能:
(1)boolean renameTo(File dest):
(2)注意事项:
a.如果两个路径都相同,则是重命名
b.如果两个路径不相同,则重命名并且剪切到新路径
目录名:demo(file对象) - > 资源(只能是一个新的路径的File对象)
8. 判断功能:
boolean isDirectory():判断是否为目录
boolean isFile:判断是否为文件
boolean exists:判断是否存在
boolean canRead():判断文件是否可读
boolean canWrite():判断文件是否可写
boolean isHidden():判断文件是否隐藏
9. 获取功能:
String getAbsolutePath():获取文件的绝对路径
String getPath():获取相对路径
String getName():获取文件(目录)的名字
String length():获取文件字节大小
long lastModified():获取文件的最后一次的修改时间(毫秒值)
String[] list:获取指定目录下面的所有文件和文件夹名字,返回一个String数组
File[] listFiles:获取指定目录下面的所有文件和文件的File对象,返回一个File数组
举例:
public class Demo07 {
public static void main(String[] args) {
String path = "/Users/TOOBUG/Desktop/Java0413/第一阶段_JAVASE(入门必修)/Day16/第16天视频";
File f1 = new File(path);
System.out.println("获取文件的绝对路径:" + f1.getAbsolutePath());
System.out.println("获取相对路径:" + f1.getPath());
System.out.println("获取文件名::" + f1.getName());
System.out.println("获取字节大小:" + f1.length());//384
System.out.println("获取最后一次修改时间:" + f1.lastModified());
Date d = new Date(f1.lastModified());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = sdf.format(d);
System.out.println("获取最后一次修改时间:" + s);
System.out.println("-----------------------");
// String[] f = f1.list();
// for(String s : f){
// System.out.println(s);
// }
File file1 = new File(path);
File [] files = file1.listFiles();
for (File f : files){
System.out.println("获取文件名::" + f.getName());
System.out.println("获取文件的绝对路径:" + f.getAbsolutePath());
System.out.println("获取相对路径:" + f.getPath());
System.out.println("获取字节大小:" + f.length());//384
System.out.println("获取最后一次修改时间:" + f.lastModified());
System.out.println("----------------------");
}
}
}
10. 例子:
判断D盘目录下面是否存在后缀名为.java的文件,如果有就进行输出并且显示相关文件的最后一次修改日期、大小
public class Demo08 {
public static void main(String[] args) {
String path = "/Users/TOOBUG/Desktop/Java0413/第一阶段_JAVASE(入门必修)/Day16/第16天代码/src/exception";
File file = new File(path);
File [] f = file.listFiles();
for (File f1 : f){
//判断是否文件
if(f1.isFile()){
//判断是否以指定后缀结尾
if(f1.getName().endsWith(".java")){
System.out.println("获取文件的绝对路径:" + f1.getAbsolutePath());
System.out.println("获取相对路径:" + f1.getPath());
System.out.println("获取文件名::" + f1.getName());
System.out.println("获取字节大小:" + f1.length());
System.out.println("获取最后一次修改时间:" + f1.lastModified());
System.out.println("------------------");
}
}
}
}
}