Java io流之File


文件和文件夹创建和删除

package com.main;

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

public class 文件和文件夹删除和创建 {

    public static void main(String[] args) throws IOException {
        //物理文件的java对象描述
        //File可以代表文件和文件夹
        //File对象可以创建、删除、获取文件和文件夹

        //判断文件、文件夹是否存在,不存在则创建
        File file = new File("d:\\index.txt");//文件
        File folder = new File("d:\\index");//文件夹
        if(file.exists()){
            file.delete();//存在文件则删除
            System.out.println("文件删除成功~");
        }else{
            if(file.createNewFile()){
                System.out.println("文件创建成功~");
            }
        }

        if(folder.exists()){
            folder.delete();
            System.out.println("文件夹删除成功~");
        }else{
            if(folder.mkdir()){
                System.out.println("文件夹创建成功~");
            }
        }
    }

}

总结:

  • 文件的创建和文件夹的创建不同,前者使用createNewFile()方法,而后者使用mkdir()方法创建;
  • 区别mkdir()方法和mkdirs()方法:
  • mkdir()表示只能在已经存在的目录下创建文件夹
  • mkdirs()表示可创建多久目录,即可以在不存在的目录下创建文件夹

获取文件规范全路径

package com.main;

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

public class 获取文件规范全路径 {

    public static void main(String[] args) {
        //文件的路径
        //这里使用getCanonicalPath()方法返回规范的全路径
        File file=new File("d:\\hzj123.txt");
        try {
            System.out.println(file.getCanonicalPath());
        }
        catch (IOException e) {

        }
    }

}

递归算法获取目录下的所有文件和文件夹

package com.main;

import java.io.File;

public class 递归获取文件和文件夹路径 {

    static int fileNum = 0;// 目录下文件总数
    static int folderNum = 0;// 目录下文件夹总数
    static int totalTimes = 0;// 记录总共遍历的次数
    static boolean isRoot = false;// 表示默认不是根目录

    // 递归
    public static void allFile(String pathname) {
        totalTimes += 1;
        File file = new File(pathname);
        // 判断是否存在,并且是文件夹
        if (file.exists()) {
            // 判断是文件还是文件夹
            if (file.isDirectory()) {
                // 第一次访问的时候
                if (totalTimes == 0) {
                    folderNum = -1;
                }
                folderNum += 1;
                // System.out.println(folderNum + "文件夹:" + file);
                File[] files = file.listFiles();// 获得当前所有的文件路径集合
                // 如果没有访问权限,那么会得到空对象,所以,此处应该包含这类判断
                if (files == null) {

                } else if (files.length > 0) {
                    for (int i = 0; i < files.length; i++) {
                        if (files[i].isDirectory()) {
                            allFile(files[i].toString());
                        }
                    }
                }
            } else if (file.isFile()) {
                fileNum += 1;
                System.out.println(fileNum + "文件:" + file);
            } else {

            }
        } else {
            System.out.println("路径不存在~");
        }
    }

    public static void main(String[] args) {
        File file = new File("G:\\Media\\练声");
        if (file.exists()) {
            allFile(file.toString());
        }
        System.out.println("当前目录以下文件总数为:" + fileNum);
        System.out.println("当前目录以下文件夹总数为:" + folderNum);
        System.out.println("递归次数:" + totalTimes);
    }
}

另一种递归方式获取…

package com.main;

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

public class 另一种效率高很多的递归方式获取文件夹和文件路径 {

    // 打印出给定的根文件夹的所有文件或者文件夹
    public void getAllFiles(String path) {
        File file = new File(path);

        File[] files = file.listFiles();

        try {

            for (int i = 0; i < files.length; i++) {

                // 打印结果
                try {
                    System.out.println(files[i].getCanonicalPath());
                } catch (IOException e) {
                    e.printStackTrace();
                }
                // 如果是目录,那么继续使用getAllFiles方法递归
                if (files[i].isDirectory()) {
                    try {
                        getAllFiles(files[i].getCanonicalPath());
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }

            }

        } catch (Exception e) {

        }

    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        另一种效率高很多的递归方式获取文件夹和文件路径 test4 = new 另一种效率高很多的递归方式获取文件夹和文件路径();
        test4.getAllFiles("C:\\");
    }

}