Java-File类2020年

4 篇文章 0 订阅


一、File类概述

  • 它是文件和目录路径名的抽象表示
  • 文件和目录是可以通过File封装成对象的
  • 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的,将来是要通过具体的操作把这个路径的内容转换为具体存在的。

二、File类的构造方法

方法名说明
File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
File(String parent, String child)从父路径名字符串和子路径名字符串创建新的File实例
File(File parent, String child)从父抽象路径名和子路径名字符串创建新的File实例
import java.io.File;

public class Demo {
    public static void main(String[] args) {
        //File(String pathname): 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
        File f1 = new File("E:\\fuhua\\java.txt");
        System.out.println(f1);
        //File(String parent, String child): 从父路径名字符串和子路径名字符串创建新的 File实例
        File f2 = new File("E:\\fuhua","java.txt");
        System.out.println(f2);
        //File(File parent, String child): 从父抽象路径名和子路径名字符串创建新的 File实例
        File f3 = new File("E:\\fuhua");
        File f4 = new File(f3,"java.txt");
        System.out.println(f4);
    }
}

E:\fuhua\java.txt
E:\fuhua\java.txt
E:\fuhua\java.txt

三、绝对路径和相对路径

绝对路径

  • 是一个完整的路径,从盘符开始

相对路径

  • 是一个简化的路径,相对当前项目下的路径
import java.io.File;

public class Demo {
    public static void main(String[] args) {
        // 是一个完整的路径,从盘符开始
        File file1 = new File("D:\\fuhua\\a.txt");
        // 是一个简化的路径,从当前项目根目录开始
        File file2 = new File("a.txt");
    }
}

四、File类创建方法

方法名说明
public boolean createNewFile()当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件
public boolean mkdir()创建由此抽象路径名命名的目录
public boolean mkdirs()创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录
import java.io.File;
import java.io.IOException;

public class Demo {
    public static void main(String[] args) throws IOException {
        //需求1:我要在E:\\fuhua目录下创建一个文件java.txt
        File f1 = new File("E:\\fuhua\\java.txt");
        f1.createNewFile();
        //需求2:我要在E:\\fuhua目录下创建一个目录JavaSE
        File f2 = new File("E:\\fuhua\\JavaSE");
        f2.mkdir();
        //需求3:我要在E:\\fuhua目录下创建一个多级目录JavaWEB\\HTML
        File f3 = new File("E:\\fuhua\\JavaWEB\\HTML");
        f3.mkdirs();
        //需求4:我要在E:\\fuhua目录下创建一个文件javase.txt
        File f4 = new File("E:\\fuhua\\javase.txt");
        f4.createNewFile();
    }
}

五、File类的常用方法

方法名说明
public boolean delete()删除由此抽象路径名表示的文件或目录
public boolean isDirectory()测试此抽象路径名表示的File是否为目录
public boolean isFile()测试此抽象路径名表示的File是否为文件
public boolean exists()测试此抽象路径名表示的File是否存在
public String getAbsolutePath()返回此抽象路径名的绝对路径名字符串
public String getPath()将此抽象路径名转换为路径名字符串
public String getName()返回由此抽象路径名表示的文件或目录的名称
public File[] listFiles()返回此抽象路径名表示的目录中的文件和目录的File对象数组

六、File类的代码实例

  • 需求
    定义一个方法 要求传入一个 一个HashMap 和一个文件夹File对象,要求统一文件夹里面的每种类型(仅限后缀长度为3)的文件出现的次数、无论文件夹里面有多少层。
package day11.demo;

import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Demo {
    public static void main(String[] args) {
        File file = new File("D:/学习");
        HashMap<String, Integer> hm = new HashMap<>();
        countDir(hm, file);
        Set<String> strings = hm.keySet();
        Iterator<String> it = strings.iterator();
        while (it.hasNext()) {
            String next = it.next();
            if (next.length() !=3){
                it.remove();
            }
        }
        Set<Map.Entry<String, Integer>> set = hm.entrySet();
        for (Map.Entry<String, Integer> s : set) {
            String key = s.getKey();
            Integer value = s.getValue();
            System.out.println(key + "文件有" + value + "个");
        }
    }
    public static void countDir(HashMap<String, Integer> hm, File file) {
        for (File list : file.listFiles()) {
            if (list.isFile()) {
                String name = list.getName();
                int i = name.lastIndexOf(".");
                String substring = name.substring(i + 1);
                if (hm.containsKey(substring)) {
                    hm.put(substring, hm.get(substring) + 1);
                } else {
                    hm.put(substring, 1);
                }
            } else {
                countDir(hm, list);
            }
        }
    }
}

css文件有137个
SCR文件有1个
PNG文件有1个
bak文件有1个
ap_文件有1个
exe文件有11个
bat文件有5个
xmi文件有1个
xml文件有784个
dex文件有1个
jar文件有1421个
apk文件有1个
zip文件有20个
RSA文件有200个
rar文件有6个
frq文件有2个
png文件有937个
nrm文件有2个
doc文件有12个
cmd文件有6个
pfx文件有1个
log文件有5个
jsp文件有272个
gen文件有2个
fla文件有1个
cfc文件有3个
cfm文件有23个
txt文件有158个
ppt文件有9个
fdt文件有2个
php文件有13个
fdx文件有2个
asp文件有14个
swf文件有1个
bmp文件有26个
cgi文件有7个
iso文件有2个
tii文件有2个
dat文件有6个
tis文件有2个
fnm文件有2个
mdf文件有1个
JPG文件有1个
gif文件有764个
lst文件有4个
sql文件有5个
sig文件有2个
xsl文件有14个
htc文件有2个
pkt文件有4个
jpg文件有253个
inf文件有97个
mvn文件有1个
dll文件有11个
ini文件有12个
ant文件有1个
afp文件有6个
tld文件有22个
rpm文件有1个
ldf文件有1个
mp4文件有4个
pdf文件有13个

Process finished with exit code 0


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

浮华′

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值