File类

File功能

1.创建文件、目录

2.删除文件、目录

3.获取文件/目录的一些属性信息:大小、最后修改日期、文件名等。

相对路径和绝对路径

1.相对路径:相对路径就是相对于当前文件的路径。

2.绝对路径:绝对路径就是硬盘上的真正路径。

package MONA.demo01_file类;

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

/**
 * file类的创建和删除
 */
public class Demo02 {
    public static void main(String[] args) throws IOException {

//        //当前项目根目录
//        File file = new File("demo.txt");
//
//        //createNewFile() 创建文件,返回是否创建成功,文件如果存在,那么不会创建
//        System.out.println("创建文件:"+file.createNewFile());
//
//        File file2 = new File("aaa");
//        //mkdir() 创建文件夹,返回是否创建成功
//        System.out.println("创建文件夹:"+file2.mkdir());
//
//        File file3 = new File("bbb\\ccc");
//        //mkdirs() 创建多级目录,返回是否成功
//        System.out.println("创建多级文件夹"+file3.mkdirs());


        //删除
        File file = new File("demo.txt");
        //删除文件/文件夹
        System.out.println("删除文件"+file.delete());

        File file2 = new File("aaa");
        System.out.println("删除目录:"+file2.delete());

        File file3 = new File("bbb\\ccc");
        System.out.println("删除多级目录:"+file3.delete());

        //只能删除空的文件夹

    }
}

File类重命名功能(目标文件为被操作的文件)

如果目标文件和原文件不在同目录下,重命名操作将会相当于“剪切”操作。

如果目标文件和原文件在同目录下,相当于“重命名”。

package MONA.demo02_file类;

import java.io.File;

/**
 * 重命名功能
 */
public class Demo03 {
    public static void main(String[] args) {
        File file1 = new File("bbb\\2.txt");
        File newFile = new File("1.txt");
        System.out.println(file1.renameTo(newFile));
    }
}

File判断功能

package MONA.demo02_file类;

import java.io.File;

/**
 *判断的功能
 */
public class Demo04 {
    public static void main(String[] args) {
        File file1 = new File("D:\\湖北省");
        System.out.println("是否是文件夹"+file1.isDirectory());

        File file2 = new File("D:\\湖北省\\长江大学");
        System.out.println("是否是文件:"+file2.isFile());
        System.out.println("是否存在"+file2.exists());
        System.out.println("是否可读"+file2.canRead());
        System.out.println("是否可写"+file2.canWrite());
        System.out.println("是否隐藏"+file2.isHidden());
    }
}

File获取文件的基本信息

package MONA.demo02_file类;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * File获取的功能
 */
public class Demo05 {
    public static void main(String[] args) {
        File file1 = new File("D:\\湖北省\\长江大学");
        //获取文件名称
        System.out.println("获取文件名称:"+file1.getName());

        //获取文件路径
        System.out.println("获取文件路径:"+file1.getPath());

        //获取抽象路径
        System.out.println("获取抽象路径:"+file1.getAbsolutePath());

        //获取文件大小
        System.out.println("获取文件大小:"+file1.length());

        //获取最后修改的时间
        System.out.println("获取最后修改时间:"+file1.lastModified());

        Date date = new Date(file1.lastModified());
        //System.out.println(date.toLocaleString());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateStr = sdf.format(date);
        System.out.println(dateStr);
    }
}

注意:在获取指定目录下的文件或者文件夹时必须满足下面两个条件

1.指定的目录必须是存在的

2.指定的必须是目录。否则容易引发返回数组的null,出现NullPointerException.

package MONA.demo03_file批量获取;

import java.io.File;

/**
 * 批量获取的方法
 */
public class Demo01 {
    public static void main(String[] args) {
        //第一种,返回的是文件字符串
        File file1 = new File("D:\\湖北省");
        String[] files = file1.list();
        for (String s : files) {
            System.out.println(s);
        }
        //第二种
        File[] files2 = file1.listFiles();
        for (File f : files2) {
            if (f.isFile()){
                System.out.println("是文件"+f.getName());
            }else{
                System.out.println("是文件夹:"+f.getName());
            }
        }
    }
}

文件名称过滤器

package MONA.demo04_过滤器;

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

/**
 * 文件名称过滤器
 */
public class Demo01 {
    public static void main(String[] args) {
        File file = new File("D:\\doc");
        //要求:获取test目录下以".txt"为后缀的文件

        //不用过滤器
        //1.获取目录下所有的文件
        //2.遍历数组,判断是否是文件,获取文件名判断结尾
        File[] files1 = file.listFiles();
        for (File f : files1) {
            if(f.isFile() && f.getName().endsWith(".txt")){
                System.out.println(f.getAbsolutePath());
            }
        }
        System.out.println("=================================================");
        //过滤器
        //FilenameFilter 接口
        FilenameFilter filter = new FilenameFilter() {
            /**
             *
             * @param dir 文件所在的文件夹
             * @param name 文件名称
             * @return
             */
            @Override
            public boolean accept(File dir, String name) {

//                System.out.println("dir="+dir.getName());
//                System.out.println("name="+name);

                //根据文件名称判断
                if(name.endsWith(".txt"))
                    return true;

                //如果返回true,就将此文件添加到数组中
                return false;
            }
        };
        File[] files2 = file.listFiles(filter);
        for (File f : files2) {
            System.out.println(f.getAbsolutePath());
        }
    }
}

文件过滤器

package MONA.demo04_过滤器;

import java.io.File;
import java.io.FileFilter;

/**
 * 文件过滤器
 *      获取目录所有的文件夹
 */
public class Demo02 {
    public static void main(String[] args) {
        File file = new File("D:\\doc");
        MyFileFilter myFileFilter = new MyFileFilter();
        File[] files = file.listFiles(myFileFilter);
        for (File f : files) {
            System.out.println(f.getAbsolutePath());
        }

//        //匿名内部类
//        FileFilter fileFilter = new FileFilter(){
//
//            @Override
//            public boolean accept(File pathname) {
//                return false;
//            }
//        };
//        file.listFiles(fileFilter);

    }
}
class MyFileFilter implements FileFilter{

    @Override
    public boolean accept(File pathname) {
        //System.out.println("pathname"+pathname.getAbsolutePath());
        return pathname.isDirectory();
    }
}
输出指定目录下指定后缀名的文件名称(当前目录)
package MONA.demo05_练习题;

import java.io.File;
import java.io.FileFilter;

/*
输出指定目录下指定后缀名的文件名称(当前目录)
 */
public class Demo01 {
    public static void main(String[] args) {
        File file = new File("D:\\doc");
        File[] files = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile() && pathname.getName().endsWith(".txt");
            }
        });
        for (File f : files) {
            System.out.println(f.getAbsolutePath());
        }
    }
}
输出指定目录下指定后缀名的文件名称(多层目录)
package MONA.demo05_练习题;

import java.io.File;
import java.io.FileFilter;

/*
输出指定目录下指定后缀名的文件名称(多层目录)
 */
public class Demo02 {
    public static void main(String[] args) {
        File file = new File("D:\\doc");
        listFiles(file);
    }
    //打印所有文件的方法
    public static void listFiles(File file){
        //获取所有的文件、文件夹列表
        File[] files = file.listFiles();
        if(files != null){

            //判断是否是文件
            for (File f : files) {
                //判断后缀名
                if(f.isFile()){
                    if(f.getName().endsWith(".txt")){
                        System.out.println(f.getAbsolutePath());
                    }
                }else{
                    //如果是目录,继续遍历
                    listFiles(f);
                }
            }
        }
    }
}

运用递归做相关File的操作

1.删除指定目录下的所有文件

package MONA.demo06_递归;

import java.io.File;

/**
 * 删除指定目录下的所有文件
 *  1.File delete() 可以删除文件夹或目录,但是文件夹只能是空的文件夹
 *  2.遍历文件夹,先删除文件夹里面的文件,然后删除文件夹
 *  思路:
 *      封装路径为File对象
 *      判断File是否为空
 *      判断File是否是文件
 *          是文件:直接删除
 *          不是文件:获取文件夹里面所有的文件列表,并遍历
 */
public class Demo02 {
    public static void main(String[] args) {
        File file = new File("D:\\doc");
        deleteFile(file);

    }
    public static void deleteFile(File file){
        if(file == null){
            return;
        }
        if(file.isFile()){
            file.delete();//删除文件
        }else{
            File[] files = file.listFiles();
            for (File f : files) {
                deleteFile(f);
            }
            //删除目录
            file.delete();
        }
    }
}
2.打印所有子目录中的文件路径
package MONA.demo06_递归;

import java.io.File;

/**
 * 打印所有子目录中的文件路径
 */
public class Demo03 {
    public static void main(String[] args) {
        File file = new File("D:\\doc");
        printFile(file);
    }
    public static void printFile(File file){
        if(file.isFile()){
            System.out.println("文件路径:"+file.getAbsolutePath());
        }else{
            File[] files = file.listFiles();
            for (File f : files) {
                printFile(f);
            }
        }
    }
}

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值