操作数组的工具类:Arrays;Arrays数组
操作集合工具类:collections; Collection集合
- Collections是一个操作set list map等集合的工具类
- Collections中提供了一系列静态的方法对集合进行排序,查询等操作
排序操作:
- sort(List);根据元素的自然排序对指定的list集合按照顺序排序
- sort(List,Comparator);根据指定comparator产生的顺序对集合list进行排序
- reverse(List);反转list集合中的元素
- shuffle(List);对list集合的元素随机排序
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Objects;
public class CollectionsDemo01 {
public static void main(String[] args) {
ArrayList list=new ArrayList();
list.add("666");
list.add("111");
list.add("222");
list.add("333");
list.add("555");
System.out.println("排序之前:"+list);
Collections.sort(list);//无返回值 根据元素的自然排序对指定的list集合按照升序排序
System.out.println("排序之后:"+list);
Collections.reverse(list);
System.out.println("反转之后:"+list);
Collections.shuffle(list);
System.out.println("随机之后:"+list);
/*
ArrayList list1=new ArrayList();
list1.add(new Student("333",30));
list1.add(new Student("222",20));
list1.add(new Student("444",35));
//Collections.sort(list1); //报错,没有自然排序
System.out.println("排序之前:"+list1);
//定制排序
Comparator c=new Comparator() {
@Override
public int compare(Object o1, Object o2) {
//if(o1 instanceof 类型)
if (o1 instanceof Student && o2 instanceof Student){
Student s1=(Student)o1;
Student s2=(Student)o2;
return s1.name.compareTo(s2.name);
}else{
throw new RuntimeException("类型不匹配");
}
}
};
Collections.sort(list1,c);
System.out.println("排序之后:"+list1);
*/
}
}
class Student{
String name;
int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age &&
Objects.equals(name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
IO流(Input输入/Output输出)
用来操作文件内容的技术,输入和输出都是针对程序来说的,以程序为主
- 假设需要将D盘中的dd.txt文件中的内容读取到java程序中来(Input输入)
- 假设程序需要将字符串写入到D盘中的dd.tet文件(Output)
- I(Input):从文件中读取内容到程序中
- O(Output):从程序中将数据写到文件中
File类(文件类):
- java.io.file类:文件和文件路径的抽象表现形式(一个File对象可以用来表示一个文件或目录)
- File能新建/删除/重命名文件或目录,但是不能访问文件中的内容
- 如果需要访问文件内容本身,需要使用IO流操作
File构造方法:
- 绝对路径:包含盘符在内的文件或者目录的路径
- 相对路径:相较于某个路径下指明的路径
- File(String filepath);以filepath为路径创建File对象,可以是绝对路径也可以是相对路径
- File(String parentPath,String childPath);以parentPath为父路径,以childPath为子路径创建File对象
- File(String file,String childPath);根据一个父file对象和一个子文件路径创建File对象
import java.io.File;
public class FileDemo01 {
public static void main(String[] args) {
// File(String filepath);
//1.
//只创建了一个对象, 不会考虑路径是否正确,只有在操作时才会检查路径是否正确
File file=new File("D:\\JavaDemo2022-213\\demo.txt");
//指的是该项目路径下的vip09.txt文件对象
File file1=new File("Vip09.txt");
//2.
File file2=new File("D:\\JavaDemo2022-213","demo.txt");
//3.
File file3=new File("D:\\JavaDemo2022-213");
File file4=new File(file3,"demo.txt");
}
}
File普通方法:
-
创建/删除
创建:对应的文件或者目录 boolean createNewFile(); 创建文件,如果指定路径下的文件存在,则不创建返回false; 指定路径下文件不存在,则创建并返回true 指定文件的父级目录必须存在;否者提示父级目录找不到!!! boolean mkdir();创建文件目录 如果此文件上层目录不存在,则创建失败,返回false boolean mkdirs();创建文件目录如果此文件目录的上级目录不存在,一并创建,并返回true
-
删除硬盘中相对应的文件或者目录
boolean delete();一定是空目录才可以删除!!
import java.io.File;
import java.io.IOException;
public class FileDemo02 {
public static void main(String[] args) throws IOException {
// File file=new File("D:\\Dee\\demo.txt");
File file1=new File("JavaDemo2022-213.txt");
// System.out.println("file:"+file.createNewFile());//false 该路径不存在
System.out.println("file1:"+file1.createNewFile());//true
System.out.println("马上删除file1:"+file1.delete());//true,删除指定的文件
File file2=new File("D:\\aa\\bb\\cc");
File file3=new File("D:\\aa\\bb\\cc");
System.out.println("使用mkdir创建目录:"+file3.mkdir());//false
System.out.println("使用mkdirs创建目录:"+file2.mkdirs());//true
/*
delete:如果file对象的路径表示是一个文件,那么直接删除该文件,返回true,反之返回false
如果file对象的路径表示的是一个目录,那么先判断目录下是否还有其他文件或者目录
如果有则删除失败,返回false
如果没有则删除成功,返回true
*/
System.out.println("使用delete删除file3:"+file3.delete());//一定是空目录才可以删除!!
}
}
-
获取
绝对路径: String getAbsolutePath(); 获取路径: String getPath();获取的是创建File对象填入的路径 获取文件名: String getName();获取文件或目录的名字 获取文件的上层目录 String getParent() 根据创建的对象时填入的路径 获取文件的长度(不能获取目录的长度) Long length();
import java.io.File;
import java.io.IOException;
public class FileDemo03 {
public static void main(String[] args) throws IOException {
File file=new File("vip09.txt");
file.createNewFile();
System.out.println(file.getAbsolutePath());//返回一个路径
File file1=new File("D:\\aa\\bb\\cc");
System.out.println("file的路径"+file.getPath());
System.out.println("file1的路径"+file1.getPath());
System.out.println("file的名字"+file.getName());
System.out.println("file1的名字"+file1.getName());
System.out.println("file的上层目录:"+file.getParent());
System.out.println("file1的上层目录:"+file1.getParent());
System.out.println("file的文件长度:"+file.length());
}
}
-
判断
判断文件是否存在 boolean isFile() 判断目录是否存在 boolean isDirectory() 判断是否存在 boolean exists()
import java.io.File;
public class FileDemo04 {
public static void main(String[] args) {
File file=new File("vip09.txt");
File file1=new File("D:\\aa\\bb\\cc");
//判断文件是否存在 boolean isFile()
System.out.println("file文件是否存在:"+file.isFile());//file是一个文件返回true
System.out.println("file1文件是否存在:"+file1.isFile());//file1是一个目录,所以返回一个false
//判断目录是否存在 boolean isDirectory()
System.out.println("file目录是否存在:"+file.isDirectory());//file是一个文件,返回false
System.out.println("file1目录是否存在:"+file1.isDirectory());//file1是一个目录,返回true
//判断是否存在 Boolean exists()
System.out.println("判断file是否存在:"+file.exists());//file存在,返回true
System.out.println("判断file1是否存在:"+file1.exists());//file存在,返回true
}
}
-
获取子目录
String[] List();获取指定文件目录下所有文件或目录的名称 File[] ListFiles();获取指定目录下所有的文件或目录对象
import java.io.File;
public class FileDemo05 {
public static void main(String[] args) {
File file=new File("D:\\KuGou");
//String[] list 获取指定目录下所有文件或目录的名称
// String[] names=file.list();
// System.out.println("list()获取D:\\KuGou目录下所有文件的名字");
// for (String a:names){
// System.out.println(a);
// }
File[] files=file.listFiles();
System.out.println("listFiles()获取D:\\KuGou目录下所有文件的名字");
for (File a:files) {
System.out.println(a);
}
}
}
小测试:删除指定文件
该文件是为了测试而新建了: D:\test\1
请不要把路径设为盘符,删除是直接删除的,不经过回收站,一旦删除,本人无法解决!!!
不要直接使用代码删除文件,因为删除文件会直接删除,不会经过回收站!!!
import java.io.File;
/*
如何删除指定目录 D:\test\1
1.判断File对象对应的路径是否存在,不存在不删
2.如果存在,判断file对象是目录还是文件
3.如果是文件则直接删除
4.如果是目录,获取目录下所有的文件或目录
5.遍历上述所有文件或目录
6.判断遍历File对象是否存在 重复第一步
7.如果存在,则判断遍历File对象是文件还是目录,重复第二步
递归:程序自己调用自己的一种编程技巧
*/
public class Test {
public static void main(String[] args) {
File file=new File("D:\\test\\1");
deleteFile(file);
}
public static void deleteFile(File file){
//1.判断File对象对应的路径是否存在,不存在不删
//file.exists()返回false表示不存在,不存在则方法结束,不删
if (!file.exists()) {
return;
}
//2.如果存在,判断File对象是目录还是文件
if (file.isFile()) {//文件直接删除
file.delete();
}else if (file.isDirectory()){
//4.如果是目录,获取目录下所有的文件或目录
File[] files=file.listFiles();
//5.遍历上述所有文件或目录
for (File f:files) {
deleteFile(f);//迭代
}
}
/*
当把目录下所有文件删除后,该目录也删除
*/
file.delete();
///6.判断遍历File对象是否存在
}
}
本人小白一枚,刚学习java,学习笔记可能有所错误,麻烦看见了请斧正,谢谢