java基础复习--File类&递归

目录

 

引言

一、File类概述

1、概念

2、构造方法 

3、常用方法

(1)、方法列举

(2)、代码演示(部分常用方法)

(3)、注意事项

 二、File类导图建模

三、递归

1、什么是递归

2、递归的基本原理

3、递归三大要素

四、图形&代码理解递归

1、图形建模

 2、代码演示

五、总结


引言

很多东西如果不是怕别人捡去,我们一定会扔掉。        

——王尔德

Because of You (Kelly Clarkson)

                                                                (分享个歌单)

一、File类概述

1、概念

1、文件和目录名路径的抽象表示形式 ,File封装的并不是一个真正存在的文件,仅仅是一个路径名,它可以存在,也可以不存在。后面需要通过对应的方法将其变成真正存在的。

2、File类主要是JAVA为文件这块的操作(如删除、新增等)而设计的相关类

3、File类的包名是java.io,其实现了Serializable, Comparable两大接口以便于其对象可序列化和比较。

2、构造方法 

通过给定的父抽象路径名和子路径名字符串创建一个新的File实例。

File(File parent, String child);

 通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。

File(String pathname) 

 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

File(String parent, String child) 

 通过将给定的 file: URI 转换成一个抽象路径名来创建一个新的 File 实例。

File(URI uri) 

 代码演示

/*
 - File的构造函数
 - */
 public static void main(String[] args) {
     //File(String pathname)  将指定路径名转换成一个File对象
     File file = new File("D:\\1.txt");
     System.out.println(file);
     //File(String parent,String child) 根据指定的父路径和文件路径创建File对象
     File file1 =  new File("D:\\a","1.txt");
     System.out.println(file1);
     //File(File parent,String child) 根据指定的父路径对象和文件路径创建File对象
     File parent = new File("D:\\a");
     File file2 = new File(parent, "1.txt");
     System.out.println(file2);
     File file3 = new File(new File("D:\\a"),"1.txt");
     System.out.println(file3);

 }

3、常用方法

(1)、方法列举

序号方法描述
1public String getName()
返回由此抽象路径名表示的文件或目录的名称。
2public String getParent()
 返回此抽象路径名的父路径名的路径名字符串,如果此路径名没有指定父目录,则返回 null
3public File getParentFile()
返回此抽象路径名的父路径名的抽象路径名,如果此路径名没有指定父目录,则返回 null
4public String getPath()
将此抽象路径名转换为一个路径名字符串。
5public boolean isAbsolute()
测试此抽象路径名是否为绝对路径名。
6public String getAbsolutePath()
返回抽象路径名的绝对路径名字符串。
7public boolean canRead()
测试应用程序是否可以读取此抽象路径名表示的文件。
8public boolean canWrite()
测试应用程序是否可以修改此抽象路径名表示的文件。
9public boolean exists()
测试此抽象路径名表示的文件或目录是否存在。
10public boolean isDirectory()
测试此抽象路径名表示的文件是否是一个目录。
11public boolean isFile()
测试此抽象路径名表示的文件是否是一个标准文件。
12public long lastModified()
返回此抽象路径名表示的文件最后一次被修改的时间。
13public long length()
返回由此抽象路径名表示的文件的长度。
14public boolean createNewFile() throws IOException
当且仅当不存在具有此抽象路径名指定的名称的文件时,原子地创建由此抽象路径名指定的一个新的空文件。
15public boolean delete()
 删除此抽象路径名表示的文件或目录。
16public void deleteOnExit()
在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
17public String[] list()
返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。
18public String[] list(FilenameFilter filter)
返回由包含在目录中的文件和目录的名称所组成的字符串数组,这一目录是通过满足指定过滤器的抽象路径名来表示的。
19public File[] listFiles()
  返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件。
20public File[] listFiles(FileFilter filter)
返回表示此抽象路径名所表示目录中的文件和目录的抽象路径名数组,这些路径名满足特定过滤器。
21public boolean mkdir()
创建此抽象路径名指定的目录。
22public boolean mkdirs()
创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。
23public boolean renameTo(File dest)
 重新命名此抽象路径名表示的文件。
24public boolean setLastModified(long time)
设置由此抽象路径名所指定的文件或目录的最后一次修改时间。
25public boolean setReadOnly()
标记此抽象路径名指定的文件或目录,以便只可对其进行读操作。
26public static File createTempFile(String prefix, String suffix, File directory) throws IOException
在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
27public static File createTempFile(String prefix, String suffix) throws IOException
在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。
28public int compareTo(File pathname)
按字母顺序比较两个抽象路径名。
29public int compareTo(Object o)
按字母顺序比较抽象路径名与给定对象。
30public boolean equals(Object obj)
测试此抽象路径名与给定对象是否相等。
31public String toString()
 返回此抽象路径名的路径名字符串。

(2)、代码演示(部分常用方法)

创建文件目录:

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

 示例代码:

public class FileDemo02 {
    public static void main(String[] args) throws IOException {
        //需求1:我要在E:\\itcast目录下创建一个文件java.txt
        File f1 = new File("E:\\itcast\\java.txt");
        System.out.println(f1.createNewFile());
        System.out.println("--------");

        //需求2:我要在E:\\itcast目录下创建一个目录JavaSE
        File f2 = new File("E:\\itcast\\JavaSE");
        System.out.println(f2.mkdir());
        System.out.println("--------");

        //需求3:我要在E:\\itcast目录下创建一个多级目录JavaWEB\\HTML
        File f3 = new File("E:\\itcast\\JavaWEB\\HTML");
//        System.out.println(f3.mkdir());
        System.out.println(f3.mkdirs());
        System.out.println("--------");

        //需求4:我要在E:\\itcast目录下创建一个文件javase.txt
        File f4 = new File("E:\\itcast\\javase.txt");
//        System.out.println(f4.mkdir());
        System.out.println(f4.createNewFile());
    }
}

 判断功能:

方法名说明
public boolean isDirectory()测试此抽象路径名表示的File是否为目录
public boolean isFile()测试此抽象路径名表示的File是否为文件
public boolean exists()测试此抽象路径名表示的File是否存在

获取功能:

方法名说明
public String getAbsolutePath()返回此抽象路径名的绝对路径名字符串
public String getPath()将此抽象路径名转换为路径名字符串
public String getName()返回由此抽象路径名表示的文件或目录的名称
public String[] list()返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
public File[] listFiles()返回此抽象路径名表示的目录中的文件和目录的File对象数组

示例代码:

public class FileDemo04 {
    public static void main(String[] args) {
        //创建一个File对象
        File f = new File("myFile\\java.txt");

//        public boolean isDirectory():测试此抽象路径名表示的File是否为目录
//        public boolean isFile():测试此抽象路径名表示的File是否为文件
//        public boolean exists():测试此抽象路径名表示的File是否存在
        System.out.println(f.isDirectory());
        System.out.println(f.isFile());
        System.out.println(f.exists());

//        public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串
//        public String getPath():将此抽象路径名转换为路径名字符串
//        public String getName():返回由此抽象路径名表示的文件或目录的名称
        System.out.println(f.getAbsolutePath());
        System.out.println(f.getPath());
        System.out.println(f.getName());
        System.out.println("--------");

//        public String[] list():返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
//        public File[] listFiles():返回此抽象路径名表示的目录中的文件和目录的File对象数组
        File f2 = new File("E:\\itcast");

        String[] strArray = f2.list();
        for(String str : strArray) {
            System.out.println(str);
        }
        System.out.println("--------");

        File[] fileArray = f2.listFiles();
        for(File file : fileArray) {
//            System.out.println(file);
//            System.out.println(file.getName());
            if(file.isFile()) {
                System.out.println(file.getName());
            }
        }
    }
}

 删除功能:

方法名说明
public boolean delete()删除由此抽象路径名表示的文件或目录

示例代码 :

public class FileDemo03 {
    public static void main(String[] args) throws IOException {
//        File f1 = new File("E:\\itcast\\java.txt");
        //需求1:在当前模块目录下创建java.txt文件
        File f1 = new File("myFile\\java.txt");
//        System.out.println(f1.createNewFile());

        //需求2:删除当前模块目录下的java.txt文件
        System.out.println(f1.delete());
        System.out.println("--------");

        //需求3:在当前模块目录下创建itcast目录
        File f2 = new File("myFile\\itcast");
//        System.out.println(f2.mkdir());

        //需求4:删除当前模块目录下的itcast目录
        System.out.println(f2.delete());
        System.out.println("--------");

        //需求5:在当前模块下创建一个目录itcast,然后在该目录下创建一个文件java.txt
        File f3 = new File("myFile\\itcast");
//        System.out.println(f3.mkdir());
        File f4 = new File("myFile\\itcast\\java.txt");
//        System.out.println(f4.createNewFile());

        //需求6:删除当前模块下的目录itcast
        System.out.println(f4.delete());
        System.out.println(f3.delete());
    }
}

(3)、注意事项

绝对路径和相对路径的区别:

  • 绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件。例如:E:\itcast\java.txt

  • 相对路径:必须使用取自其他路径名的信息进行解释。例如:myFile\java.txt

 二、File类导图建模

聊File类,肯定避不开IO流,这是一定的。如果你没有一个系统的概念,会很乱,请看以下:

 IO流体系我分几章分别来介绍,太多了大家看着也难受。

三、递归

递归有一种算法,数据结构的,不懂得建议好好复习以下在这。

1、什么是递归

所谓递归,在数学与计算机科学中,是指在函数的定义中使用函数自身的算法。通俗来说,递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解

2、递归的基本原理

第一,每一级的函数调用都有自己的变量。

第二,每一次函数调用都会有一次返回。

第三,递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序。

第四,递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反。

第五,虽然每一级递归都有自己的变量,但是函数代码并不会得到复制。


3、递归三大要素

第一要素:明确你这个函数想要干什么。先不管函数里面的代码什么,而是要先明白,你这个函数的功能是什么,要完成什么样的一件事。

第二要素:寻找递归结束条件。我们需要找出当参数为啥时,递归结束,之后直接把结果返回,请注意,这个时候我们必须能根据这个参数的值,能够直接知道函数的结果是什么。

第三要素:找出函数的等价关系式。我们要不断缩小参数的范围,缩小之后,我们可以通过一些辅助的变量或者操作,使原函数的结果不变。

四、图形&代码理解递归

1、图形建模

 

 2、代码演示

public class Digui {

    public static int Zuhe1(int n,int k){
        int x=1,y=1,z=1,c;
        for(int i=n;i>0;i--){
            x=i*x;
        }
        for(int i=k;i>0;i--){
            y=i*y;
        }
        for(int i=n-k;i>0;i--){
            z=i*z;
        }
        c=x/(y*z);
        return c;
    }//公式法求
    public static int Zuhe2(int n,int k){
         int c=1;
         for(int i=k;i<n;i++){
             c=c*(i+1)/(i-k+1);
         }
         return c;
    }//递推法求
    public static int Zuhe3(int n,int k){
        int i=n;
        if(n==k){
            return 1;
        }
        else{
            return Zuhe3(n-1,k)*n/(n-k);
        }
        
    }//递归法求

    public static void main(String args[]) {
    int n,k;
    Scanner sc=new Scanner(System.in);
    n=sc.nextInt();
    k=sc.nextInt();
    System.out.println(Zuhe1(n,k));
    System.out.println(Zuhe2(n,k));
    System.out.println(Zuhe3(n,k));
    }
}

//运行结果
6
4
15
15
15

五、总结

 

点个赞吧,评个论吧,收个藏吧......

  • 16
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 31
    评论
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值