欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

文件File

程序员文章站 2022-05-27 14:48:40
...

File类:文件相关操作


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

/**
 * IO流:针对的是内存,操作的是文件 输入:从文件输入到向内存-读 输出:从内存输出到文件-写
 *
 * @author cuijiao
 *
 */
public class IOstream {
    public static void main(String[] args) throws IOException {
        File file = new File("E:\\hello.js");// new的时候只是指存在于内存中的对象,只有当对它操作时才与磁盘文件有关系
        if (!file.exists()) {// 判断磁盘中是否存在该文件
            file.createNewFile();// 若不存在创建新的文件
        }

        System.out.println(file.canExecute());// 判断是否可执行
        System.out.println(file.canWrite());// 判断是否可写
        System.out.println(file.canRead());// 判断是否可读

        file.deleteOnExit();// 当程序运行结束,虚拟机终止时删除文件
        // file.delete();// 删除文件
        System.out.println("删除文件");// 此时执行deleteOnExit文件并未删掉
        try {
            Thread.sleep(50000);// 让程序停50秒
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("程序结束");// 程序结束,文件才被删掉
    }
}
  File file = new File("E:\\hello.js");// new的时候只是指存在于内存中的对象,只有当对它操作时才与磁盘文件有关系
        if (!file.exists()) {// 判断磁盘中是否存在该文件
            file.createNewFile();// 若不存在创建新的文件
        }
        // 路径两个\\是转义,在磁盘中路径实际只有一个\

        // 绝对路径:从盘符(C\D\E)往下找
        System.out.println(file.getAbsolutePath());// 获取绝对路径
        System.out.println(file.getName());// 获取文件名
        System.out.println(file.getParent());// 获取目录
        // 文件和目录都是file类型
        System.out.println(file.isFile());// 判断是否是文件
        System.out.println(file.isDirectory());// 判断是否是目录(文件夹)
        System.out.println(file.isHidden());// 是否为隐藏文件

文件File

文件夹相关操作

 public static void main(String[] args) throws IOException {

        // 文件夹和文件拥有相同的方法:判断可读、可写、可执行等
        File file = new File("E:\\a\\b\\c");
        if (!file.exists()) {
            file.mkdirs();// 常用
            // file.mkdir();// 只创建一个文件夹,若父目录不存在则不自动创建
        }
        file.delete();// 只能删除最低一层的子文件夹
    }

显示文件夹下的所有文件

     /**
     * 静态方法不能调用非静态方法,因为静态方法是属于对象的
     */
    public static void main(String[] args) throws IOException {

        // 文件夹和文件拥有相同的方法:判断可读、可写、可执行等
        File file = new File("E:\\layui-v2.4.3");

        // String[] list = file.list();// 仅能展示直接子目录
        // 要显示文件夹下所有子文件夹及文件需要用递归算法

        showSubFiles(file);

    }

    private static void showSubFiles(File file) {
        // TODO Auto-generated method stub

        File[] files = file.listFiles();

        for (File sub : files) {
            if (sub.isFile()) {
                System.out.println("\t" + sub);// 文件
            } else {
                if (sub.listFiles().length == 0) {
                    System.out.println(sub);// 空文件夹
                } else {
                    // System.out.println(sub.getParent() + ":");// 文件夹的直接父目录
                    showSubFiles(sub);
                }

            }
找出指定后缀的文件

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

/**
 *
 * @author cuijiao
 *
 */
public class IOstream {
    public static void main(String[] args) throws IOException {

        File file = new File("E:\\layui-v2.4.3");
        new IOstream().getFilesBySuffix(file, ".js");
    }

    /**
     * 找出文件夹中直系子目录中指定后缀的文件
     *
     * @param dic
     * @param suffix
     */
    public void getFilesBySuffix(File dic, String suffix) {
        if (!dic.isDirectory()) {
            System.out.println("不是文件夹");
            return;
        } else {
            File[] files = dic.listFiles(new MyFilter(suffix));// 会过滤掉文件夹,不好
            for (File file : files) {
                System.out.println(file);
            }
        }

    }

    /**
     * 私有内部类
     *
     * @author cuijiao
     *
     */
    private class MyFilter implements FilenameFilter {
        private String suffix;

        public MyFilter(String suffix) {
            this.suffix = suffix;
        }

        /**
         * name 文件名
         */
        @Override
        public boolean accept(File dir, String name) {
            return name.lastIndexOf(suffix) == name.length() - suffix.length();
        }

    }
}

若想找出目录中所有(深层次)的指定后缀的文件,还需自己写一套逻辑,不用FilenameFilter 过滤。

相关标签: file