JAVA中的IO流的那些事----File类中常用的方法解析

package HuiXin;

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

public class Test {
    public static void main(String[] args) throws IOException {
        File file= new File("D:"+File.separator+"huixi"+File.separator+"LivelyWallPaper");
        File file1= new File("D:/HuiXin.doc");

        if (!file1.exists()){
            file1.createNewFile();
        }
        System.out.println("文件是否可执行--"+file.canExecute());
        System.out.println("文件绝对路径--"+file.getAbsolutePath());
        System.out.println("文件相对路径--"+file.getPath());

        System.out.println("文件是否可读--"+file.canRead());
        System.out.println("文件是否可写--"+file.canWrite());
        System.out.println("文件地址比较--"+file.compareTo(file1));
        System.out.println("文件绝对文件--"+file.getAbsoluteFile());
        File file2= new File("D:/Study.doc");
        System.out.println("文件重命名--"+file1.renameTo(file2));//可以实现好几种功能
        System.out.println("文件名--"+file.getName());
        System.out.println("------------"+file.getCanonicalPath());
        System.out.println(file.getCanonicalFile());
        System.out.println("文件根目录--"+file.getParent()+"返回值为String");
        System.out.println("文件的上级目录--"+file.getParentFile()+"返回值为File类的实例");

        System.out.println("文件是否是一个目录--"+file.isDirectory());

        System.out.println("文件是否是一个文件--"+file.isFile());
        System.out.println("文件是否隐藏--"+file.isHidden());

        System.out.println(file.getTotalSpace());//如果是文件,则返回0
        File file3 = new File("C:");
        System.out.println("盘符剩余空间--"+file3.getFreeSpace());//抽象路径名表示的剩余空间大小
        System.out.println("盘符总空间--"+file3.getTotalSpace());//抽象路径名表示的分区的总大小,
        System.out.println("盘符未分配空间--"+file3.getUsableSpace());//抽象路径名表示的分区的未分配的总大小,

    }
}


小细点—

1. 带扩展名与不带的区别,
但是最终都反应的是所在盘符的空间状态;//当文件或者路径不存在时返回0L

File f= new File("D:\\Study.doc");
        File file3 = new File("C:");

        System.out.println("盘符剩余空间--"+file3.getFreeSpace());//抽象路径名表示的剩余空间大小
        System.out.println("盘符总空间--"+file3.getTotalSpace());//抽象路径名表示的分区的总大小,
        System.out.println("盘符未分配空间--"+file3.getUsableSpace());//抽象路径名表示的分区的未分配的总大小,
        System.out.println("盘符剩余空间--"+f.getFreeSpace());//抽象路径名表示的剩余空间大小
        System.out.println("盘符总空间--"+f.getTotalSpace());//抽象路径名表示的分区的总大小,
        System.out.println("盘符未分配空间--"+f.getUsableSpace());//抽象路径名表示的分区的未分配的总大小,

在这里插入图片描述

细节区别—
写全扩展名与没写全的区别
文件没写全扩展名且目录下又没有该文件夹–
在这里插入图片描述
如果写全了扩展名
结果如下----

在这里插入图片描述

2,获得绝对路径和相对路径的区别–

 File file4= new File("AQ.ppt");
        System.out.println("当前File对象的绝对路径名的字符串---"+file4.getAbsolutePath());
        System.out.println("当前File对象的绝对路径名File实例---"+file4.getAbsoluteFile());
        System.out.println("当前File对象的相对路径名的字符串---"+file4.getPath());

在这里插入图片描述

3,getParent()与getParentFile()的区别

返回值类型不同–但是输出值一样,因为输出是调用了toString()
public String getParent() {//返回值类型为String

public File getParentFile() {//返回值类型为File

4,getCanonicalPath()与getCanonicalFile()区别

 System.out.println("文件规范路径--"+file.getCanonicalPath());//String
        System.out.println("文件规范路径--"+file.getCanonicalFile());//File

在这里插入图片描述
区别也是返回值不一样;

5,renameTo()方法的应用

需要两个File实例—

对于文件—扩展名一样(如果不带扩展名,jvm视为文件夹名)

  File file1= new File("D:/HuiXin.doc");
File file2= new File("D:/Study.doc");
        System.out.println("文件重命名--"+file1.renameTo(file2));//可以实现好几种功能

如果文件路径一样----
在这里插入图片描述
对于文件夹–

File file1= new File("D:/HuiXin");
        File file2= new File("D:/Study");
        System.out.println("文件重命名--"+file1.renameTo(file2));//可以实现好几种功能

在这里插入图片描述
如果文件路径不一样,可以实现文件的剪切或者剪切后的重命名


        File file1= new File("D:/Study.doc");
        File file2= new File("D:/Study/DayDayUp.doc");
        System.out.println("文件重命名--"+file1.renameTo(file2));//可以实现好几种功能

在这里插入图片描述

6,list()与listFiles()的区别

先看代码–

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

public class Test {
    public static void main(String[] args) throws IOException {
        File file1= new File("D:\\Program Files");
        String[] list = file1.list();
        for (String s : list) {
            System.out.println(s);
        }
        System.out.println("-------------分割线----------------");
        File[] files = file1.listFiles();
        for (File file : files) {
            System.out.println(file);
        }

    }
}


在这里插入图片描述

public String[] list() {//返回String[]

public File[] listFiles() {//返回File[]
由方法返回值以及输出结果可以看出返回值不一样,结果–一个不带路径,一个带路径

list以及listFiles还有其他方法–带参数
在这里插入图片描述
再来看带参数的方法–

list(FilenameFilter fileter)
@FunctionalInterface
public interface FilenameFilter {//一个功能接口

通过方法名–文件名过滤–实代码

package HuiXin;

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

public class Test {
    public static void main(String[] args) throws IOException {
        File file1 = new File("C:\\Program Files\\XMind ZEN");
        String[] list = file1.list();
        for (String s : list) {
            System.out.println(s);
        }
        System.out.println("-------------过滤之后的----------------");

        FilenameFilter filenameFilter = new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                String filename = name.toLowerCase();
                if (filename.endsWith(".dll")) {
                    if (filename.startsWith("d")|filename.startsWith("f")) {
                        return true;
                    }
                }
                return false;
            }
                   };
        String[] list1 = file1.list(filenameFilter);
        for (String s : list1) {
            System.out.println(s);
        }
    }
}

过滤之后的结果如下–
在这里插入图片描述
listFiles(FilenameFilter fileter)
public File[] listFiles(FilenameFilter filter) {//返回值为File[]

File[] files = file1.listFiles(filenameFilter);
        for (File file : files) {
            System.out.println(file);
        }

在这里插入图片描述

listFiles( FileFilter fileFilter)

package setTest;

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


public class Test {
    public static void main(String[] args)  {
        File file1 = new File("C:\\Program Files\\XMind ZEN");
        String[] list = file1.list();
        for (String s:list
             ) {
            System.out.println(s);
            if(s.equals("XMind ZEN.exe")){
                System.out.println("-------------过滤之后的----------------");
            }
        }
            FileFilter fileFilter = new FileFilter() {
                @Override
                public boolean accept(File pathname) {
                    boolean flag=pathname.getName().toLowerCase().endsWith("exe");
                    return flag ;
                }
            };

            File[] listFiles = file1.listFiles(fileFilter);
            for (File listFile : listFiles) {
                System.out.println(listFile);
            }

    }
}

在这里插入图片描述
7,mkdir()与mkdirs()的区别

File file1 = new File("C:\\D\\E\\F");
   boolean mkdir = file1.mkdir();
        System.out.println(mkdir);

在这里插入图片描述

  File file1 = new File("C:\\D");
        boolean mkdir = file1.mkdir();
        System.out.println(mkdir);
        File file = new File("C:\\DD\\EE\\FF");
        boolean mkdirs = file.mkdirs();
        System.out.println(mkdirs);
        

在这里插入图片描述

区别----
mkdir()是创建单目录的,mkdirs()是创建多级目录的;

看一下源码–返回值不一样
在这里插入图片描述
接下来回顾一下dos中的命令mkdir

在这里插入图片描述
删除–
在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeMartain

祝:生活蒸蒸日上!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值