day20 Java File 习题(后缀名判断 文件名称过滤器)


I know, i know
地球另一端有你陪我




我们要想实现IO的操作,就必须要知道硬盘上文件的表现形式
Java中用一个类来供我们使用,抽象的表示硬盘上的各种文件
这个类叫做File

一、File 类

文件和目录(文件夹)路径名的抽象表现形式

1、构造方法

1、根据绝对路径
public File(String pathname)

	File file1 = new File("//D:\\韭菜盒子.txt");

2、根据路径和子文件名
public File(String parent,String child)

	File file2 = new File("//D:\\", "韭菜盒子.txt");

3、根据文件兑现和子文件名
public File(File parent,String child)

	File file3 = new File("//D:\\");
    File file4 = new File(file3, "韭菜盒子.txt");

2、创建功能

1、创建一个新的文件
public boolean createNewFile()

	//	在文件路径上创建 韭菜盒子.txt 文件
	File file1 = new File("//D:\\韭菜盒子.txt");
	file1.createNewFile();
	//	如果该文件已经存在,就不会创建,不会报错
    //	想要在指定目录下创建文件,前提是该目录必须存在,否在报错

2、创建一个新的文件夹
public boolean mkdir()

	//	在文件路径上创建 韭菜盒子.txt 文件
	File file2 = new File("//D:\\韭菜盒子");
	file2.mkdir();
	

3、创建多级文件夹
public boolean mkdirs()

	File file3 = new File("//D:\\韭菜盒子\\韭菜盒子\\韭菜盒子");
	file3.mkdir();

3、删除功能

删除 File 对象
public boolean delete()

	File file1 = new File("//D:\\韭菜盒子");
	file1.delete();

注:对于文件夹,只能删除文件夹内容为空的对象,即使其中是另一个空文件夹

4、重命名功能

File 对象重命名
public boolean renameTo(File dest)

    File file1 = new File("//D:\\韭菜盒子");
    File file2 = new File("//D:\\fgh");
    file1.renameTo(file2);

注:形参类型为 File 类型

5、判断功能

1、判断是否为文件夹
public boolean isDirectory(File dest)

2、判断是否为文件
public boolean isFile(File dest)

3、判断对象是否存在
public boolean exists(File dest)

4、判读对象是否可读
public boolean canRead(File dest)

5、判断对象是否可写
public boolean canWrite(File dest)

6、判断对象是否隐藏
public boolean isHidden(File dest)

6、基本获取功能

1、获取绝对路径
public String getAbsolutePath()

2、获取相对路径(相对于 java 代码包)
public String getPath()

3、获取对象名
public String getName()

4、获取文件的字节大小
public long length()

5、获取文件最后修改时间戳
public long lastModified()

    long i = file1.lastModified();
    System.out.println(i);
    //时间戳与日期之间的转换
    Date date = new Date(1634644166450L);
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String format = sdf.format(date);
    System.out.println(format);

7、高级获取功能

1、获取指定目录下的所有文件或者文件夹的名称,组成字符串数组
public String[] list()

    File file = new File("D:\\韭菜盒子");
    String[] list = file.list();
    for (String s : list) {
    
    
        System.out.println(s);
    }
/*	
		fgh
		fgh.txt
		韭菜盒子.txt
*/

2、获取指定目录下的所有文件或者文件夹的名称,组成文件对象数组
public File[] listFiles()

    System.out.println("---------------");
    File[] files = file.listFiles();
    for (File f : files) {
    
    
        System.out.println(f);
    }
/*	
		D:\韭菜盒子\fgh
		D:\韭菜盒子\fgh.txt
		D:\韭菜盒子\韭菜盒子.txt
		
		此时数组成员均为 File 对象,默认输出路径
*/

二、习题

后缀名判断

public static void fun(File file) {
    
    
    File[] files = file.listFiles();
    for (File f : files) {
    
    
    	//	遇到文件夹就递归
        if(f.isDirectory()){
    
    
            fun(f);
        }
        if(f.isFile()){
    
    
            String name = f.getName();
            if(name.endsWith(".txt"))
                System.out.println(f);
        }
    }
}

文件名称过滤器

文件名称过滤器的实现思想及代码
public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)

public static void fun2(File file) {
    
    
    File[] files = file.listFiles(new FilenameFilter() {
    
    
    	//	File目录下的文件集封装到一个数组中。
		//	调用accept()方法,从数组中过滤出符合条件的文件
        @Override
        public boolean accept(File dir, String name) {
    
    
            
            File file1 = new File(dir, name);
            boolean b = file1.isFile();
            boolean b1 = name.endsWith(".txt");
            return b && b1;
        }
    });
    for (File f : files) {
    
    
        System.out.println(f);
    }
}

Guess you like

Origin blog.csdn.net/qq_41464008/article/details/120836594