• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

File类

开发技术 开发技术 2周前 (04-30) 4次浏览

File类

File类的概述和构造方法

File:文件和目录路径名的抽象表示。

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

构造方法

public File(String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。
public File(String parent,String child)从父路径名字符串和子路径名字符串创建新的File实例。
public File(File parent,String child):从父抽象路径名和子路径名字符串创建一个新的File实例。
package com.Lei.file;

import java.io.File;

public class FileDemo01 {
    public static void main(String[] args) {
        //public File(String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。
        File f1 = new File("E:\study1\java.txt");
        System.out.println(f1);//File类重写了toString方法

        //public File(String parent,String child)从父路径名字符串和子路径名字符串创建新的File实例。
        File f2 = new File("E:\study1", "java.txt");
        System.out.println(f2);

        //public File(File parent,String child):从父抽象路径名和子路径名字符串创建一个新的File实例。
        File f3 = new File("E:\study1");
        File f4 = new File(f3, "java.txt");
        System.out.println(f4);

    }
}

创建功能

/public boolean createNewFil():当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。
//如果文件不存在,就创建文件,并返回true
//如果文件存在,就部创建文件,并返回false

public boolean mkdir():创建由此抽象路径名命名的目录。
        //如果文件不存在,就创建文件,并返回true
        //如果文件存在,就部创建文件,并返回false

public boolean mkdirs():创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。
        //如果文件不存在,就创建文件,并返回true
        //如果文件存在,就部创建文件,并返回false
package com.Lei.file;

import java.io.File;
import java.io.IOException;

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

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

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

        //需求4:在E:\study目录下创建一个文件javase.txt
        File f4 = new File("E:\study\javase.txt");
//        System.out.println(f4.mkdir());//根据调用的方法来判断是文件还是目录
        System.out.println(f4.createNewFile());

    }
}

判断和获取功能

public boolean isDirectory():测试此抽象路径名表示的文件是否为目录。
public boolean isFile():测试此抽象路径名表示的文件是否为普通文件。
public boolean exists():测试此抽象路径名表示的文件或目录是否存在。
    
public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串。
public String getPath():将此抽象路径名转换为路径名字符串。
public String getName():返回由此抽象路径名表示的文件或目录的名称。  
    
public String[] list():返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
public File[] listFiles():返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。    
package com.Lei.file;

import java.io.File;

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

        //public boolean isDirectory():测试此抽象路径名表示的文件是否为目录。
        //public boolean isFile():测试此抽象路径名表示的文件是否为普通文件。
        //public boolean exists():测试此抽象路径名表示的文件或目录是否存在。
        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 f2 = new File("E:\study\JavaSE");

        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():删除由此抽象路径名表示的文件或目录。
package com.Lei.file;

import java.io.File;
import java.io.IOException;

//public boolean delete():删除由此抽象路径名表示的文件或目录。
public class FileDemo04 {
    public static void main(String[] args) throws IOException {
//        File f1 = new File("C:\Users\liuqi\Desktop\Java\java.txt");//绝对路径
        //需求1:在当前模块目录下创建java.txt文件
        File f1 = new File("基础语法\java.txt");//相对路径
//        System.out.println(f1.createNewFile());

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

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

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

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

        //需求6:删除当前模块下的目录itcast
        System.out.println(f4.delete());//目录下有文件时,要先删文件,再删目录
        System.out.println(f3.delete());
    }
}

递归

以编程的角度来看,递归是指方法定义中调用方法本身的现象

递归解决问题的思路:

  • 把一个复杂问题层层转化为与原问题相似的规模较小的问题来求解
  • 递归策略只需少量的程序就可描述出解题过程中所需的多次重复运算

两个内容:

  • 递归出口:否则会出现内存溢出
  • 递归规则:与原问题相似的规模较小的问题
package com.Lei.file;

public class DiGuiDemo {
    //兔子对数问题:1,1,2,3,5,8...
    public static void main(String[] args) {
        System.out.println(f(20));//StackOverflowError 当堆栈溢出发生时抛出一个应用程序递归太深。
    }

    public static int f(int n) {
        if (n == 1 || n == 2) {
            return 1;
        } else {
            return f(n - 1) + f(n - 2);
        }

    }
}

案例

package com.Lei.file;

//需求:给定一个路径,通过递归完成遍历该目录下的所有内容,并把所有文件的绝对路径输出在控制台

import java.io.File;

public class DiGuiDemo02 {
    public static void main(String[] args) {
        //1.根据给定的路径创建一个File对象
        File srcFile = new File("E:\study");

        //6.调用方法
        getFilePath(srcFile);
    }

    //2.定义一个方法,用于获取给定目录下的所有内容,参数为第一步创建的File对象
    public static void getFilePath(File srcFile){
        //3.获取给定的File目录下的所有文件或目录的File数组
        File[] filesArray = srcFile.listFiles();
        //4.遍历该File数组,得到每一个File对象
        if (filesArray!=null){
            for (File file:filesArray){
                //5.判断该File对象是否时目录
                if (file.isDirectory()){
                    //是:递归调用
                    getFilePath(file);
                }else {
                    //否:获取绝对路径输出在控制台
                    System.out.println(file.getAbsolutePath());
                }
            }
        }
    }

}

程序员灯塔
转载请注明原文链接:File类
喜欢 (0)