File类、递归

1、File类

1.1、概述

java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建,查找,删除等操作

1.2、构造方法

  1. public File(String pathname):通过将给定的路径字符串转换为抽象路径名来创建File对象
  2. public File(String parent, String child):从父路径名字符串和子路径名字符串创建新的File对象
  3. public File(File parent, String child):从父路径名字符串和子路径名字符串创建新的File对象
package com.bdit;

import java.io.File;

/*
File对象创建
 */
public class Demo1 {
    public static void main(String[] args) {
        File file1=new File("e:\\a.txt");

        File file2=new File("d:\\","abc\\b.txt");

        File file3=new File("e:\\");

        File file4=new File(file3,"bdit");
    }
}

【注意:1、一个File对象代表的是某个路径下的一个文件或者目录
2、无论该目录下是否存在文件或目录,都不影响File对象的创建】

1.3、常用方法

获取功能的方法
  1. public String getAbsolutePath():返回此File的绝对路径名字符串
  2. public String getPath():将此File转换为路径名字符串
  3. public String getName():返回由此File表示的文件或目录名
  4. public long length():返回由此File表示的文件的长度
  5. public String getParent():返回由此File对象表示的路径的父目录
package com.bdit;

import java.io.File;

public class Demo2 {
    public static void main(String[] args) {
        File f=new File("e:/aaa/bbb/c.txt");
        System.out.println("文件的绝对路径:"+f.getAbsolutePath());
        System.out.println("文件的构造路径:"+f.getPath());
        System.out.println("文件名称:"+f.getName());
        System.out.println("文件父目录:"+f.getParent());
        System.out.println("文件长度:"+f.length());
        
    }
}
绝对路径和相对路径
  1. 绝对路径:从盘符开始的路径,这是一个完整的路径
  2. 相对路径:相对于某个目录的路径,这是一个便捷的路径
判断功能的方法
  1. public boolean exists():此File表示的文件或目录是否真的存在
  2. public boolean isDirectory():此File表示的是否为目录
  3. public boolean isFile():此File表示的是否为文件
  4. public boolean isHidden():此FIle表示的是否为隐藏文件
package com.bdit;

import java.io.File;

/*
File判断相关的方法
 */
public class Demo3 {
    public static void main(String[] args) {
        File file=new File("E:\\aaa\\bbb");
        System.out.println("是否存在:"+file.exists());
        System.out.println("是否为目录:"+file.isDirectory());
        System.out.println("是否为文件:"+file.isFile());
        System.out.println("是否为隐藏:"+file.isHidden());
    }
}
创建删除功能的方法
  1. public boolean createNewFile():如果不存在就创建一个空的文件
  2. public boolean delete():删除由此File表示的文件或目录
  3. public boolean mkdir():创建由此File表示的目录
  4. public boolean mkdirs():创建由此File表示的目录,包括任何必须但不存在的父目录
  5. public boolean renameTo(File dest):重命名
package com.bdit;

import java.io.File;

/*
创建删除功能的方法
 */
public class Demo4 {
    public static void main(String[] args) {
        File f1=new File("E:\\aaa\\bbb\\d.txt");
        try{
            if(!f1.exists()) {
                f1.createNewFile();
            }
        }catch (Exception se){
            se.printStackTrace();
        }
        f1.delete();

        File f2=new File("E:\\bdit");
        if(!f2.exists()) {
            f2.mkdir();
        }
        f2.delete();

        File f3=new File("E:\\java","javase");
        f3.mkdirs();

        File f4=new File("E:\\bdit");
        f4.renameTo(new File("E:\\newbdit"));

    }
}

1.4、目录的遍历

  1. public String[] list():返回一个String数组,表示该File目录中所有的子文件或目录
  2. public File[] listFiles():返回一个File数组,表示该File目录中所有的子文件或目录
package com.bdit;

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

/*
目录的遍历
 */
public class Demo5 {
    public static void main(String[] args) {
        File f=new File("E:\\");
        String[]names=f.list();
        for(String n:names){
            System.out.println(n);
        }
        System.out.println("==================================");
        File[]files=f.listFiles(new MyFileNameFilter());
        for(File ff:files){
            System.out.println("------>"+ff.getName());
        }
    }
}

class MyFileNameFilter implements FilenameFilter{

    /**
     *
     * @param dir 表示当前过滤的File对象
     * @param name 表示当前过滤的文件名
     * @return
     */
    @Override
    public boolean accept(File dir, String name) {
        if(name.endsWith(".txt")){
            return true;
        }
        return false;
    }
}

2、递归

递归:指在当前方法内调用自己的这种现象

递归的分类:

  1. 递归分为两种,直接递归和间接递归
  2. 直接递归称为方法自身调用自己
  3. 间接递归可以理解为:A方法调用B方法,B方法调用C方法,C方法调用A方法

注意事项:

  1. 递归一定要有条件限定,保证递归能够停止下来,否则会发生内存溢出
  2. 在递归中虽然有条件限定,但是递归次数不能太多,否则也会发生内存溢出
  3. 构造方法,禁止递归
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值