java中的File

操作数组的工具类:Arrays;Arrays数组
操作集合工具类:collections; Collection集合

  1. Collections是一个操作set list map等集合的工具类
  2. Collections中提供了一系列静态的方法对集合进行排序,查询等操作

排序操作:

  1. sort(List);根据元素的自然排序对指定的list集合按照顺序排序
  2. sort(List,Comparator);根据指定comparator产生的顺序对集合list进行排序
  3. reverse(List);反转list集合中的元素
  4. 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类(文件类):

  1. java.io.file类:文件和文件路径的抽象表现形式(一个File对象可以用来表示一个文件或目录)
  2. File能新建/删除/重命名文件或目录,但是不能访问文件中的内容
  3. 如果需要访问文件内容本身,需要使用IO流操作

File构造方法:

  1. 绝对路径:包含盘符在内的文件或者目录的路径
  2. 相对路径:相较于某个路径下指明的路径
  • 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普通方法:

  1. 创建/删除

        创建:对应的文件或者目录
        boolean createNewFile();
            创建文件,如果指定路径下的文件存在,则不创建返回false;
            指定路径下文件不存在,则创建并返回true
            指定文件的父级目录必须存在;否者提示父级目录找不到!!!
        boolean mkdir();创建文件目录 如果此文件上层目录不存在,则创建失败,返回false
        boolean mkdirs();创建文件目录如果此文件目录的上级目录不存在,一并创建,并返回true
    
  2. 删除硬盘中相对应的文件或者目录

    	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());//一定是空目录才可以删除!!
    }
}

  1. 获取

    绝对路径:  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());


    }
}

  1. 判断

    判断文件是否存在 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

    }
}

  1. 获取子目录

    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,学习笔记可能有所错误,麻烦看见了请斧正,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值