File类详解

1 计算机文件

1.1 什么是计算机文件

  • 以计算机磁盘为载体存储计算信息的总和;

1.2 文件目录

  • 文件目录又称文件夹,是便于对文件管理和操作;

1.3 文件斜杠和反斜杠

  • 斜杠 " / " ,反斜杠" \ ";
  • 反斜杠是一个特殊的字符,又称转义符,转义后面一个字符,表示一个不可见的字符或者把一个特殊字符标识为普通字符 例如 :\ ,? 、\t、\r、\n、\b…;

1.4 相对路径和绝对路径

  • 绝对路径是指的是文件或者文件夹在计算机中实际的绝对路径;
  • 相对路径是指的是基于文件和目录的路径;

1.5 分隔符

  • windows的路径分隔符 “\”
  • linux的路径分隔符"/"

2 File类

2.1 File类的作用

  • 对文件和目录进行操作,对文件和目录进行增删改查;
常量描述
public static final String separator文件之间的分隔符

2.2 File类的方法

2.2.1 增

方法描述
public boolean createNewFile()新增一个文件
public boolean mkdir()新增一个文件夹
public boolean mkdirs()新增多个文件夹
举例
import java.io.File;
import java.io.IOException;

public class FileTest {
    public static void main(String[] args) throws IOException {
        //创建一个文件123456.txt
        File file1=new File("C:\\Users\\14408\\Desktop\\card\\test\\123456.txt");
        System.out.println(file1.createNewFile());
        //创建一个目录test1
        File file2=new File("C:\\Users\\14408\\Desktop\\card\\test\\test1");
        System.out.println(file2.mkdir());
        //创建多级目录
        File file3=new File("C:\\Users\\14408\\Desktop\\card\\test\\test1\\test2");
        System.out.println(file3.mkdirs());
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.2 删

方法描述
public void delete()要删除一个文件夹 必须删除先文件夹所有的文件和子文件夹
import java.io.File;
import java.io.IOException;

public class FileTest {
    public static void main(String[] args) throws IOException {
        //删除一个文件123456.txt
        File file1=new File("C:\\Users\\14408\\Desktop\\card\\test\\123456.txt");
        System.out.println(file1.delete());
        //删除一个目录test1
        File file2=new File("C:\\Users\\14408\\Desktop\\card\\test\\test1\\test2");
        System.out.println(file2.delete());
    }
}

在这里插入图片描述

2.2.3 查

方法描述
public String getPaths ()获取路径
public String getparent()获取父路径
public String getName()获取文件名称
public String getAbusolute()获取绝对路径的名称
public Boolean istAbusolute()判断这个路径是否为绝对路径
public Boolean exists()判断这个文件是存在
public long length()判断这个文件字节码长度
public String [] list ()获取指定目录下所有的文件下的文件或者文件夹字符串数组
public String [] listFiles ()获取指定目录下所有的文件下的文件或者文件夹File对象数组
示例
import java.io.File;
import java.io.IOException;

public class FileTest {
    public static void main(String[] args) throws IOException {
        //删除一个文件123456.txt
        File file1=new File("C:\\Users\\14408\\Desktop\\card\\test\\test1\\朱自清-背影.txt");
        //获取文件的路径
        String path = file1.getPath();
        System.out.println("文件路径是"+path);
        System.out.println("================================");

        //获取的文件的名称
        String name = file1.getName();
        System.out.println("文件路径是"+name);
        System.out.println("================================");

        //获取的文件的父路径
        String Parent = file1.getParent();
        System.out.println("文件路径是"+Parent);
        System.out.println("================================");


        //打印绝对路径
        String AbsolutePath = file1.getAbsolutePath();
        System.out.println(AbsolutePath);
        System.out.println("================================");


        //判断这个路径是否为绝对路径
        boolean isAbsolute = file1.isAbsolute();
        System.out.println(isAbsolute);
        System.out.println("================================");

        //判断这个文件是否存在
        boolean flag = file1.exists();
        System.out.println(flag);
        System.out.println("================================");


        //判断这个文件是否可读
        long length = file1.length();
        System.out.println(length);
        System.out.println("================================");

        //获取指定路径下的所有的文件和文件夹String数组
        File file2=new File("C:\\Users\\14408\\Desktop\\card\\test\\test1");
        String[] list = file2.list();

        for (String a:list){
            System.out.println(a);
        }

        System.out.println("================================");
        //获取指定路径下的所有的文件和文件夹File对象数组
        File[] listFiles = file2.listFiles();

        for (File a:listFiles){
            System.out.println(a);
        }

    }
}

在这里插入图片描述

2.2.3 改

方法描述
public boolean renameTo(File file)将file对象的源文件的最后一个文件和文件夹进行操作
注意点
  • 修改名字只能在同一文件夹
  • 不同的路径下会对源文件进行复制
  • 对文件夹操作,文件夹里面不能包含文件

2.5 练习

1 创建一个方法里面会建立10个文件和10个目录每个文件夹包含了一个文件和目录

import java.io.File;
import java.io.IOException;

public class FileTest {
    public static void main(String[] args) throws IOException {
        //建立一个文件对象
        File file=new File("C:\\Users\\14408\\Desktop\\card\\test\\test1\\Directory");
        createFileAndDirs(file);



    }
    public static void createFileAndDirs(File file) throws IOException {
        File file1 = file;
        for (int i = 1; i <= 10; i++) {
            file1 = new File(file1, i + ".txt");
            file1.createNewFile();
            String parent = file1.getParent();
            file1 = new File(parent, i + "");
            file1.mkdir();
        }
    }
}```


![在这里插入图片描述](https://img-blog.csdnimg.cn/4e7ada53effb4192ae6e0b4c016345bb.png)
2 使用递归的方法删除10个目录的10个目录

```java
import java.io.File;
import java.io.IOException;

public class FileTest {
    public static void main(String[] args) throws IOException {
        //建立一个文件对象
        File file=new File("C:\\Users\\14408\\Desktop\\card\\test\\test1\\Directory");
        //调用删除文件的方法
        deleteFileAndDirs(file);
    }
    //建立10个文件和文件夹
    public static void createFileAndDirs(File file) throws IOException {
        File file1 = file;
        for (int i = 1; i <= 10; i++) {
            file1 = new File(file1, i + ".txt");
            file1.createNewFile();
            String parent = file1.getParent();
            file1 = new File(parent, i + "");
            file1.mkdir();
        }
    }

    //使用递归的方式删除10个文件
    public static void deleteFileAndDirs(File file){
        File[] files = file.listFiles();
        for(File file1:files){
            if (file1.isDirectory()){
                deleteFileAndDirs(file1);
            }else{
                file1.delete();
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值