Java学习记录(十三)File类

File的创建方法

File有三种创建方法,其根本都是将字符串传递给File类用来创建File类型的对象

第一种直接传入字符串创建File对象

下列就为直接将文件地址当作一个字符串直接传入File类创建对象

java 复制代码
//文件的创建
        File f = new File("D:\\Test\\aTest.txt");
        System.out.println(f);

第二种将父文件夹和本身分割开,再拼接创建File对象

java 复制代码
//文件的拼接创建,格式为在创建文件对象时传入夫文件名和本文件的名字new File(parent,son);
        String parent = "D:\\Test";
        String son = "aTest.txt";
        File f1 = new File(parent,son);

第三种先创建父文件夹对象,再用字符串的形式传入本文件,进行创建File类

java 复制代码
//用字符串的方式拼接
        File f2 = new File("D:\\Test");
        String sonname = "aTest.txt";
        File f3 = new File(f2,sonname);
        System.out.println(f3);

File常见的成员方法

判断获取方法

创建删除方法

获取并遍历该文件夹

练习

下面是一个对于上面方法相关小练习,要求查找一个文件夹下所有以.txt和.avi结尾的文件,并打印出他们的个数,这道题会用到递归思想

java 复制代码
package com.itazhang.Demo1;

import java.io.File;

public class FileExercise3 {
    static int count1 = 0;
    static int count2 = 0;
    public static void main(String[] args) {
        File f = new File("D:\\11Codingtext\\Myfile\\aaa");
        find(f);
        System.out.println(".txt结尾的文件有"+count1+"个");
        System.out.println(".avi结尾的文件有"+count2+"个");

    }
    public static void find(File file){
        File[] listFiles = file.listFiles();
        for (File listFile : listFiles) {
            //判断是否为文件
            if(listFile.isFile()){
                if(listFile.getName().endsWith(".txt")){
                    count1++;
                }
                else if(listFile.getName().endsWith(".avi")){
                    count2++;
                }
            }else{
                find(listFile);
            }
        }
    }
}

从上图看出,都应该是两个,而在上面代码中不能将count计数器和打印语句放在find方法里,因为会使用到递归,每次进入新的文件夹都会重新调用该方法,这样的话就会每次都将count重新设置为初始值实现不了计数的功能,打印语句放入方法中也会导致每次递归就会打印,所以将count计数器使用静态赋值的方式放在main方法,且将打印方法也放在main方法,这样可以在使用递归的同时满足题目的需求。

相关推荐
xiaotao1317 小时前
02-机器学习基础: 监督学习——线性回归
学习·机器学习·线性回归
墨黎芜7 小时前
ArcGIS从入门到精通——地图符号、注记的初步使用
学习·arcgis·信息可视化
小李云雾8 小时前
FastAPI重要知识点---中间件(Middleware)
学习·程序人生·中间件·fastapi·middleware
小夏子_riotous8 小时前
Docker学习路径——3、常用命令
linux·运维·服务器·学习·docker·容器·centos
STLearner8 小时前
WSDM 2026 | 时间序列(Time Series)论文总结【预测,表示学习,因果】
大数据·论文阅读·人工智能·深度学习·学习·机器学习·数据挖掘
redaijufeng8 小时前
网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。
爬虫·学习·selenium
腾科IT教育9 小时前
零基础快速上岸HCIP,高效学习思路分享
学习·华为认证·hcip·hcip考试·hcip认证
23471021279 小时前
4.14 学习笔记
笔记·python·学习
醇氧9 小时前
【学习】软件过程模型全解析:从瀑布到敏捷的演进之路
学习·log4j
邪修king9 小时前
UE5 零基础入门第三弹: 碰撞与触发交互,解锁场景机关与蓝图封装(高娱乐性学习)
学习·ue5·交互