菜鸡学习day19_File类&递归

菜鸡学习day19

package day19;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.logging.FileHandler;

/*
File类
(文件和目录的抽象表示形式,将文件和文件夹封装为一个File)
操作文件和文件夹
是一个与系统无关的类
file文件      irectory文件夹     path路径
静态方法
static String pathSeparator 与系统有关的路径分隔符 字符串
static char pathSeparatorChar 与系统有关的路径分隔符
static String separator 与系统有关的默认名称分隔符 字符串
static char SeparatorChar 与系统有关的默认名称分隔符

路径
1.绝对路径:是一个完整的路径,从盘符开始的路径 d:\\xxxx
2.相对路径:简化的路径,相对于当前项目的根目录,省略当前项目的根目录,123.txt
注:不区分大小写
    反斜杠是转移字符,\\相当于一个\

构造方法
1.  File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建一个新File实例
String pathname为路径名称字符串,可以以文件/文件夹结尾,相对/绝对路径,存在/不存在
创建File类对象,只是把字符串路径封装为File对象,不考虑路径的真假
2.  File(String parent,String child)创建一个File实例
parent父路径   child子路径
3.  File(File parent,String child)
父路径为File类型,可以使用类的方法

相对路径默认在项目同文件夹下?

常用方法
1.获取功能的方法
pubic String getAbsolutePath()获取构造方法中传递的绝对路径
pubic String getPath()将此file转换为路径字符串
pubic String getName()返回由此file表示的文件或目录名称(结尾部分)
pubic long length()返回文件大小,若不存在或为文件夹,返回0
2.判断功能的方法
public boolean exists()判断路径是否存在
public boolean isDirectory()判断路径是否以文件夹结尾
public boolean exists()判断路径是否以文件结尾(不存在都是false,否则两个方法结果互斥)
3.创建删除功能的方法
public boolean createNewFile()当且仅当文件不存在时,创建一个新的空文件
        声明抛出了IOExceotion异常,需要处理/抛出
public boolean delete()删除由此file表示的文件或目录
public boolean mkdir()创建单级空文件夹
public boolean mkdirs()创建单级/多级空文件夹

File类遍历(文件夹)目录功能
public String【】List()返回一个String数组,表示file的目录
        获取目录中所有文件/夹存储到String数组中
public File【】ListFiles()返回一个File数组,表示file的目录
注:若路径不存在/不是目录,发生空指针异常

递归
直接递归a-a
间接递归b-c-b
注:1.必须有条件限定,否则栈内存溢出
    2.递归次数不能太多,否则栈内存溢出
    3.构造方法禁止递归,编译报错(船舰对象使用,产生无数个对象)
递归求和使内存中存在多个main和sum,效率低下

*/

public class D1901 {
    public static void main(String[] args) throws IOException {
        jingTai01();
        gouZao01();
        System.out.println(diGui01(10));//求和55
        System.out.println(diGui02(5));//阶乘120
        File filesss = new File("D:\\IDEA\\basic-code");
        lianXi01(filesss);
    }
    
    private static void jingTai01(){
        String pathSeparator = File.pathSeparator;
        System.out.println(pathSeparator);//路径分隔符 win分号;linux冒号:

        String separator = File.separator;
        System.out.println(separator);//默认名称分隔符 win\,linux/
    }

    private static void gouZao01() throws IOException {
        //File(String pathname)
        File file1 = new File("a.txt");
        System.out.println(file1);//a.txt

        File file2 = new File("d:\\","a.txt");
        System.out.println(file2);//d:\a.txt

        //获取功能的方法
        System.out.println(file1.getAbsolutePath());//D:\IDEA\basic-code\a.txt
        System.out.println(file1.getPath());//a.txt
        System.out.println(file1.getName());//a.txt
        System.out.println(file1.length());//0

        //判断功能的方法
        System.out.println(file1.exists());//false

        //创建删除功能的方法
        //boolean b1 = file1.createNewFile();
        //System.out.println(b1);//true
        boolean b2 = file2.mkdir();
        System.out.println(b2);
        System.out.println(file1.getAbsolutePath());

        //File类遍历(文件夹)目录功能
        File file = new File("D:\\IDEA\\basic-code\\day19\\src");
        System.out.println(Arrays.toString(file.list()));
    }

    private static int diGui01(int n) {//递归计算1-n的和
        if(n == 1){//保证有限次数
            return 1;
        }
        return n +diGui01(n - 1);
    }

    private static int diGui02(int n) {
        if(n == 1){
            return 1;
        }
        return n * diGui02(n - 1);
    }

    private static int lianXi01(File dir) {//总是有点不太对。。
        //System.out.println(dir);
        File[] files = dir.listFiles();
        if(files == null){//百度告诉我要判断隐藏空文件夹,否则空指针异常
            System.out.print("");
            return 0;
        }
        for(File f : files){
            if(dir.isDirectory()){
                lianXi01(f);
            }
            else{
                System.out.println(f);
                //souSuo01(f);//搜索遍历java文件
            }

        }
        return 0;

    }
    private static void souSuo01(File f){
        String str = f.toString();
        boolean b = str.endsWith(".class");
        if(b){
            System.out.println(f);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值