文件File

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());// 是否为隐藏文件

这里写图片描述

文件夹相关操作
 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 过滤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值