文件(File类): 构造方法;常用方法;案例(修改文件或多级文件夹中所有相同类型的文件的后缀名 ;删除文件或多级文件夹)

文件(File类)

一、 File类的概述和构造方法

File类的概述:
	文件和目录路径名的抽象表示形式
构造方法:
	File(String pathname):根据一个路径得到File对象    
	File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
  	File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象
演示:
	1. File file = new File("D:\\IdeaProjects\\作业\src\\myhomework\\HomeWork.java") ;
	2. File file2 = new File("D:\\IdeaProjects\\作业\\src\\myhomework, "HomeWork.java") ;
	3. File file3 = new File("D:\\IdeaProjects\\作业\\src\\myhomework") ;
	   File file4 = new File(file3 , "HomeWork.java") ;
路径:
	绝对路径:带有盘符号的详细路径
	相对路径:不带盘符号的路径
	./当前路径
	../当前路径的上一级路径
	../../上两级

二、File类常用方法

1、与创建相关的方法

file.createNewFile();//创建文件或目录,返回值为是否创建成功
file.mkdir();//创建目录,返回值为是否创建成功,只能创建单级目录
file.mkdirs();//可创建多级目录

2、删除相关的方法

file.delete();//删除文件或非空目录,注意不走回收站,返回值为是否删除成功

3、重命名相关方法

file.renameTo(file1);//file1为新名字的File类型 重命名文件,返回值为是否重命名成功,还可以实现剪切功能,如果源文件路径和传入文件路径不一致,就会发生剪切现象

4、判断功能

file.isFile();//判断是否为文件
file.isDirectory();//判断是否为文件夹
file.exists();//判断文件或目录是否存在
file.canRead();//判断文件是否可读
file.canWrite();//判断文件是否可写
file.isHidden();//判断文件或目录是否隐藏
file.canExecute();//Linux系统下判断是否是可执行文件
file.isAbsolute();//判断路径名是否为绝对路径名

5、关于获取的方法

file.getName();//获取文件名或路径名
file.length();//获取文件字节数
file.getAbsolutePath();//获取绝对路径,返回字符串形式
file.getAbsoluteFile();//获取绝对路径,返回文件类型
file.getPath();//获取相对路径,返回字符串形式
file.getParent();//获取该文件父路径,返回字符串形式
file.getParentFile();//获取该文件父路径,返回文件形式
file.getTotalSpace();//获取某个盘符的空间大小(字节)
file.getFreeSpace();//获取剩余空间(字节)
file.lastModified();//获取文件最后一次修改时间(毫秒)
file.list();//获取该目录下所有的文件或文件夹的名称,返回String[]数组
file.listFiles();//获取该目录下所有的文件或文件夹的File[]数组,可以传入过滤器

三、案例

//修改文件或多级文件夹中所有相同类型的文件的后缀名
//删除文件或多级文件夹
import java.io.File;

public class MyTest {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\73256\\Desktop","新建文件夹");
        boolean f1 = rename(file,".txt",".doc");
        System.out.println(f1);

        File file1 = new File("C:\\Users\\73256\\Desktop","新建文件夹");
        boolean f = deleteFile(file1);
        System.out.println(f);
    }

    //修改文件或多级文件夹中所有相同类型的文件的后缀名
    private static boolean rename(File file,String oldSuffixName,String newSuffixName) {
        boolean flag=false;

        if(file==null||!file.exists()){
            return false;
        }

        if(file.isFile()){
            File file1 = new File(file.getParentFile(), file.getName().replace(oldSuffixName, newSuffixName));
            file.renameTo(file1);
            return true;
        }

        File[] files = file.listFiles();
        for (File f : files) {
            if(f.isFile()&&f.getName().endsWith(oldSuffixName)){
                File file1 = new File(f.getParentFile(), f.getName().replace(oldSuffixName, newSuffixName));
                boolean b = f.renameTo(file1);
                flag=(!flag&&b);
            }else {
                rename(f,oldSuffixName,newSuffixName);
            }
        }
        return flag;
    }

    //删除文件或多级文件夹
    private static boolean deleteFile(File file) {
        if(file==null||!file.exists()){
            return false;
        }
        if(file.isFile()){
            file.delete();
            return true;
        }
        File[] files = file.listFiles();
        for (File f : files) {
            if(file.isDirectory()){
                deleteFile(f);
            }
            f.delete();
        }
        file.delete();
        return !file.exists();
    }
}
发布了55 篇原创文章 · 获赞 23 · 访问量 4352

猜你喜欢

转载自blog.csdn.net/y_Engineer/article/details/96918070
今日推荐