面试 jetbrains Gitlab CSS选择器 Java程序员 cocoa lambda charts configuration vue router pmp视频教程 node卸载命令 查看rabbitmq版本 kafka消费不到数据 python开发教程 python定义变量 python图形界面开发 python当前日期 javafile java基础数据类型 java正则表达式详解 java怎么配置 java时间戳转换 linux下载安装 linux中grep php开发教程 vs2010sp1 系统集成项目管理工程师教程 俄罗斯方块java代码 相关软件 js倒计时代码 crazytalk tar解压 win10画图 暴力猴插件 ps扭曲变形 html5制作 oledbconnection dnf传说 lol无法连接服务器
当前位置: 首页 > 学习教程  > 编程语言

Java File类

2020/10/16 17:57:58 文章标签:

java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 File类的构造方法 方法名说明File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例File(String parent, String child)从父路径名字符…

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

File类的构造方法

方法名说明
File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
File(String parent, String child)从父路径名字符串和子路径名字符串创建新的 File实例
File(File parent, String child)从父抽象路径名和子路径名字符串创建新的 File实例

示例代码:

public class FileDemo01 {
    public static void main(String[] args) {
//File(String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。
        File f1=new File("E:\\测试文件\\java.txt");
        System.out.println(f1);
//File(String parent, String child):从父路径名字符串和子路径名字符串创建新的File实例。
        File f2=new File("E:\\测试文件","java.txt");
        System.out.println(f2);
//File(File parent, String child):从父抽象路径名和子路径名字符串创建新的File实例。
        File f3=new File("E:\\测试文件");
        File f4=new File(f3,"java.txt");
        System.out.println(f4);
    }
}

File类创建删除功能的方法

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

示例代码:

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

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

        //需求3:我要在E:\\测试文件目录下创建一个多级目录JavaWEB\\HTML
        File f3=new File("E:\\测试文件\\Javaweb\\HTML");
        System.out.println(f3.mkdirs());
        
         //文件的删除
        System.out.println(f1.delete());
        //目录的删除
        System.out.println(f2.delete());
        System.out.println(f3.delete());

        
    }
}

在这里插入图片描述
在这里插入图片描述

File类判断和获取功能

  • 判断功能
方法名说明
public boolean isDirectory()测试此抽象路径名表示的File是否为目录
public boolean isFile()测试此抽象路径名表示的File是否为文件
public boolean exists()测试此抽象路径名表示的File是否存在
public class FileDemo02 {
    public static void main(String[] args) throws IOException {
        File f1=new File("E:\\测试文件\\java.txt");
        System.out.println(f1.isDirectory());
        System.out.println(f1.isFile());
        System.out.println(f1.isAbsolute());
        
        System.out.println("---------");
        File f2=new File("E://测试文件");
        System.out.println(f2.isDirectory());
        System.out.println(f2.isFile());
        System.out.println(f2.isAbsolute());
    }
}

在这里插入图片描述

  • 获取功能
方法名说明
public String getAbsolutePath()返回此抽象路径名的绝对路径名字符串
public String getPath()将此抽象路径名转换为路径名字符串
public String getName()返回由此抽象路径名表示的文件或目录的名称
public long length()返回由此File表示的文件的长度
public String[] list()返回一个String数组,表示该File目录中的所有子文件或目录
public File[] listFiles()返回一个File数组,表示该File目录中的所有的子文件或目录
public class FileDemo02 {
    public static void main(String[] args) throws IOException {
        File f1=new File("E:\\测试文件\\java.txt");
        System.out.println("文件绝对路径:"+f1.getAbsoluteFile());
        System.out.println("文件构造路径:"+f1.getPath());
        System.out.println("文件名称:"+f1.getName());
        System.out.println("文件长度:"+f1.length()+"字节");

        System.out.println("---------");
        File f2=new File("E://测试文件");
        System.out.println("目录绝对路径:"+f2.getAbsolutePath());
        System.out.println("目录构造路径:"+f2.getPath());
        System.out.println("目录名称:"+f2.getName());
        System.out.println("目录长度:"+f2.length());
        System.out.println("-----------");
        String[] strArray = f2.list();
        for (String str:strArray){
            System.out.println(str);
        }
        System.out.println("-----------");
        File[] fileArray = f2.listFiles();
        for (File file:fileArray){
            if (file.isFile()){
                System.out.println(file.getName());
            }
        }
    }
}

在这里插入图片描述

在这里插入图片描述

递归

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

  • 递归分为两种,直接递归和间接递归。
  • 直接递归称为方法自身调用自己。
  • 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。

注意事项
递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。

public class Demo01DiGui {
	public static void main(String[] args) {
		a();
	}
	/*
	 * 1.递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。 Exception in thread "main"
	 * java.lang.StackOverflowError
	 */
	private static void a() {
		System.out.println("a方法");
		a();
	}
}

在这里插入图片描述
内存分析
在这里插入图片描述

  • 在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
    在这里插入图片描述

在这里插入图片描述

  • 构造方法,禁止递归
    在这里插入图片描述

  • 递归累加求和

    分析:num的累和 = num + (num-1)的累和,所以可以把累和的操作定义成一个方法,递归调用。

public class DiGuiDemo {
	public static void main(String[] args) {
		//计算1~num的和,使用递归完成
		int num = 5;
      	// 调用求和的方法
		int sum = getSum(num);
      	// 输出结果
		System.out.println(sum);
		
	}
  	/*
  	  通过递归算法实现.
  	  参数列表:int 
  	  返回值类型: int 
  	*/
	public static int getSum(int num) {
      	/* 
      	   num为1时,方法返回1,
      	   相当于是方法的出口,num总有是1的情况
      	*/
		if(num == 1){
			return 1;
		}
      	/*
          num不为1时,方法返回 num +(num-1)的累和
          递归调用getSum方法
        */
		return num + getSum(num-1);
	}
}

在这里插入图片描述

  • 递归求阶乘

    阶乘:所有小于及等于该数的正整数的积。
    n的阶乘:n! = n * (n-1) *...* 3 * 2 * 1

public class DiGuiDemo {
  	//计算n的阶乘,使用递归完成
    public static void main(String[] args) {
        int n = 3;
      	// 调用求阶乘的方法
        int value = getValue(n);
      	// 输出结果
        System.out.println("阶乘为:"+ value);
    }
	/*
  	  通过递归算法实现.
  	  参数列表:int 
  	  返回值类型: int 
  	*/
    public static int getValue(int n) {
      	// 1的阶乘为1
        if (n == 1) {
            return 1;
        }
      	/*
      	  n不为1时,方法返回 n! = n*(n-1)!
          递归调用getValue方法
      	*/
        return n * getValue(n - 1);
    }
}

在这里插入图片描述

  • 递归打印多级目录
    • 分析:多级目录的打印,就是当目录的嵌套。遍历前,无法知道到底有多少级目录,所以我们要使用递归实现。

示例代码

public class DiGuiDemo2 {
    public static void main(String[] args) {
        // 创建File对象
        File dir  = new File("E:\\测试文件");
        // 调用打印目录方法
        printDir(dir);
    }

    public static void  printDir(File dir) {
        // 获取子文件和目录
        File[] files = dir.listFiles();
        // 循环打印
      	/*
      	  判断:
      	  当是文件时,打印绝对路径.
      	  当是目录时,继续调用打印目录的方法,形成递归调用.
      	*/
        for (File file : files) {
            // 判断
            if (file.isFile()) {
                // 是文件,输出文件绝对路径
                System.out.println("文件名:"+ file.getAbsolutePath());
            } else {
                // 是目录,输出目录绝对路径
                System.out.println("目录:"+file.getAbsolutePath());
                // 继续遍历,调用printDir,形成递归
                printDir(file);
            }
        }
    }
}

在这里插入图片描述


本文链接: http://www.dtmao.cc/news_show_300219.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?