java中文件File类的常用方法以及文件过滤器的使用

文件File

​ file类:文件和目录路径名的表现形式——通过file对象实现对文件或文件夹的操作

1.构造方法(3种)
  • File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
  • File(String parent, String child):根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
  • File(File parent, String child);根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File file=new File("aaa.txt");
System.out.println(file);//aaa.txt
File file2=new File("D:\\JAVA培训\\JAVA_SE进阶\\aaa.jpg");

String parent="D:\\JAVA培训\\JAVA_SE进阶";String son="aaa.jpg";
File file3=new File(parent, son);
        
File file4=new File(parent);
File file5=new File(file4, son);
2.常用方法

创建功能:

  • boolean createNewFile():检查文件是否存在,若不存在则创建该文件
  • boolean mkdir(): 创建此抽象路径名指定的目录。
  • public boolean mkdirs():创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

重命名和删除功能:

  • public boolean renameTo(File dest):重命名,同级目录下就是改名;不在同一级目录下就是改名加剪切
  • public boolean delete():删除,删除不可逆,不走回收站(只能删除空文件)
public static void main(String[] args) throws IOException {
        File file1=new File("aaa.txt");
        System.out.println(file1.createNewFile());//true:创建文件,没有才创建
        System.out.println(file1.delete());//true:删除文件aaa
        File file2=new File("bbb");
        System.out.println(file2.renameTo(new File("aaa")));//true:将文件夹bbb重命名为aaa
        System.out.println(file2.mkdir());//true:创建文件夹
        File file3=new File("ccc\\aaa");
        System.out.println(file3.mkdirs());//true:创建多级文件夹
    }

判断功能:

  • isDirectory(): 是否为文件夹;isFile():是否为文件
  • exists():是否存在;isHidden();是否是隐藏文件
  • canRead()canWrite();是否可读\写(window认为所有文件都是可读,但是可以设置设置是否可写)

获取功能:

  • String getAbsolutePath(); String getPath():获取绝对路径、相对路径
  • String getName();long length():
  • long lastModified();返回此抽象路径名表示的文件最后一次被修改的时间。
  • String[] list(); File[] listFiles():
private static void demo02() {//获取功能
        File file1=new File("aaa.txt");
        System.out.println("绝对路径"+file1.getAbsolutePath());//绝对路径:D:\JAVA培训\JAVA_SE进阶\IO流\aaa.txt
        System.out.println("相对路径"+file1.getPath());//相对路径aaa.txt
        System.out.println("getName:"+file1.getName());//getName:aaa.txt
        System.out.println("文件字节数:"+file1.length());//文件字节数:0
        //获得最后修改时间
        long l=file1.lastModified();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("文件最后修改时间为:"+sdf.format(l));//文件最后修改时间为:2019-11-23 10:01:40
    }

private static void demo1() throws IOException {//判断功能
        File file1=new File("aaa.txt");
        file1.createNewFile();
        System.out.println(file1.exists());//判断其是否存在:ture
        System.out.println(file1.isFile());//是否为文件:true
        System.out.println(file1.isDirectory());//是否为文件夹:false
        boolean b = file1.setReadable(false);boolean b1 = file1.canRead();
        System.out.println(b+":"+b1);//false:true
        boolean b3 = file1.setWritable(false);boolean b4 = file1.canWrite();
        System.out.println(b3+":"+b4);//true:false
    }
private static void demo03() {
        File file1=new File("aaa");
        String [] list=file1.list();//list()获取文件夹下面所有的文件或者文件夹。返回文件或者文件夹的字符串数组
        for (String f : list) {
            if(f.endsWith(".jpg"))System.out.println(f);//aaa.jpg
        }
        
        File[] files = file1.listFiles();//listFiles()  返回文件夹下面所有的文件或者文件对象数组
        for (File f : files) {
            if (f.isFile()&&f.getName().endsWith(".jpg"))System.out.println(f);//aaa\aaa.jpg    
        }
    }

文件过滤器

​ 来获取一个目录下满足条件的部分子选项(即只获取文件或只获取目录);文件过滤器更多是被用于listFiles(FileFilter filter)的参数中。

FileFilter接口:boolean accept(File pathname)

FilenameFilter接口:boolean accept(File dir, String name)

public static void main(String[] args) {
        File file=new File("aaa");
        String[] list = file.list(new FilenameFilter() {//通过文件名称过滤器对文件名称进行过滤
            @Override
            public boolean accept(File dir, String name) {
                File file2=new File(dir,name);
                return file2.isFile()&&file2.getName().endsWith(".jpg");
            }
        });
        for (String f : list) {
            System.out.println(f);//aaa.jpg
        }
        File[] listFiles = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile()&&pathname.getName().endsWith(".jpg");
            }
        });
        for (File f2 : listFiles) {
            System.out.println(f2);//aaa\aaa.jpg
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值