Java io流之File

来源:互联网 发布:域名商 编辑:程序博客网 时间:2024/05/01 01:22

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:\\");    }}
0 0