File类的使用-Java


File的用法

File是用来对文件进行操作的。IO流是对文件的读写进行操作,本身不具有对文件的增删。

三种创建File的方式

1.直接给定文件路径。(此指绝对路径。)

    private static void demo01() {
    
    
//        通过给定的路径名确定文件
        String path = "E:\\itheima\\a.txt";
//        使用File类中的方法
        File file = new File(path);

        System.out.println(file.getName());
        System.out.println(file.isFile());
    }

2.使用父路径和文件名。

private static void demo02() throws IOException {
    
    
    File f = new File("a.txt");
    if (!f.exists()) {
    
    
        f.createNewFile();
    }
    String path1 = "E:\\itheima";
    String path2 = "a.txt";
    File file = new File(path1, path2);
    System.out.println(file.getAbsolutePath());
}

3.使用父文件对象和文件名。

private static void demo03() {
    
    
    File file = new File("E:\\itheima");
    String name = "a.txt";
    File file2 = new File(file,name);
    System.out.println(file2.getAbsolutePath());
}

创建文件的方法

创建空文件

createNewFile()

public boolean createNewFile();
创建一个新的空的文件。

创建文件夹

f.mkdir(); //创建一个单级文件夹
f.mkdirs(); //创建一个多级文件夹。

删除文件

File file = new File("E:\\itheima\\a.txt");
file.delete();
// public boolean delete(); 删除文件。

File类判断和获取功能

public boolean isDirectory() //测试此抽象路径名表示的file是否为目录
public boolean isFile() //测试该File是否为文件
public boolean exists() //测试该file是否存在
public String getName() //返回该路径名表示的文件或目录的名称。

File类高级获取

listfiles();
File[] files = file.listFiles();

注意事项:
当调用者不存在时,返回null
当调用者是一个文件时,返回null
当调用者是一个空文件夹时,返回一个长度为0的数组。
当调用者是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回。
当调用者是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件。
当调用者是一个需要权限才能进入的文件夹时,返回null
练习1.在当前文件夹 aaa 文件夹下创建 a.txt文件
private static void demo07() throws IOException {
    
    
    File file1 = new File("aaa");
    file1.mkdir();
    File file2 = new File(file1,"a.txt");
    boolean flag = file2.createNewFile();
    System.out.println(flag);
}
练习2.删除多级文件夹
    private static void deleteDir(File src) {
    
    
//        从该源文件中找到所有的子文件,
        //        首先进入该源文件夹,然后从该文件夹中查看所有的子文件,属于文件的直接删除,属于文件夹的递归,然后是文件的再删除。
//        最后删除src源文件。
        File[] files = src.listFiles();
        for (File file : files) {
    
    
            if (file.isFile()) {
    
    
                file.delete();
            } else if (file.isDirectory()) {
    
    
                deleteDir(file);
            }
        }
        src.delete();
    }
练习3,统计一个源文件夹内的各类型的文件数量。
 private static void demo09() {
    
    
        File file = new File("E:\\BiliDown");
        HashMap<String, Integer> map = new HashMap<>();
        getCount(map, file);
        System.out.println(map);
    }

    //    计算各个类型的文件的数量。
    private static void getCount(HashMap<String, Integer> map, File file) {
    
    
//        首先进入该文件,获取所有子文件。
        File[] files = file.listFiles();
        for (File f : files) {
    
    
            if (f.isFile()) {
    
    
//                如果是文件的话
                String filename = f.getName();
                String[] filename_arr = filename.split("\\.");
                int length = filename_arr.length;
                String last_name = filename_arr[length - 1];
                boolean flag = map.containsKey(last_name);
                if (flag == true) {
    
    
//                        如果该后缀文件已经存在。
                    Integer number = map.get(last_name);
                    number++;
                    map.put(last_name, number);
                } else if (flag == false) {
    
    
//                        如果没有存在
                    map.put(last_name, 1);
                }
            } else if (f.isDirectory()) {
    
    
//                如果是文件夹的话,继续递归进入
                getCount(map, f);
            }
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_45022687/article/details/122592112