File类,递归

File类

  File文件和目录路径名的抽象表示形式。即,Java中把文件或者目录(文件夹)都封装成File对象。

  File类包含
       路径    path E:\...
       目录 directory 文件夹
       文件 file
File类的成员变量

例子:

// 名称分隔符
System.out.println(File.pathSeparator);//win ;    linux :
// 路径分隔符
System.out.println(File.separator);//win \       linux /

File类的构造方法

  

File类构造方法不会检验文件是否存在

创建File对象

例子:

//1
File file=new File("e:\\test\\a.txt");
//2
File file=new File("e:","a.txt");//灵活性高,
//3
File f1=new File("d:\\test");
File file=new File(f1,"a.txt");//灵活性更高

File类的获取

//获取绝对路径
    public static void method3(){
        //File file=new File("d:\\test\\a.txt");
        //File file=new File("src");
        File file=new File("abc");
        //相对路径走的是本工程路径
        System.out.println(file.getAbsolutePath());
    }
  public static void method4(){
        //获取本路径目录名或者文件名
        File file=new File("d:\\codetool\\jdk1.8.zip");
        System.out.println(file.getName());
        //getPath()和toString()一个作用
        System.out.println(file.getPath());
        //返回文件的长度long(字节数)检测空间大小,不是容量大小
        System.out.println(file.length());
    }

文件或文件夹的创建删除与测试

    public static void methd4() throws IOException{
        //创建文件,只能创建文件,不能创建文件夹
        File f1=new File("e:\\test\\c");
        System.out.println(f1.createNewFile());
    }
public static void methd5() throws IOException{
        //创建文件夹,只能创建文件夹,不能创建文件
        File f1=new File("e:\\test\\d");
        System.out.println(f1.mkdir());//单级目录,false
        File f2=new File("e:\\test\\d\\aaa.txt");
        System.out.println(f2.mkdirs());//多级目录,true
//        mkdirs创建多级目录
    }
    public static void method7(){
        //删除文件或文件夹
        //直接从硬盘上删除,不走回收站,
        //删除需谨慎

      //删除目录时,如果目录中有内容,无法直接删除。

      //只有将目录中的内容都删除后,保证该目录为空。这时这个目录才可以删除

      File file=new File("d:\\test\\aaa.txt");

boolean flag=file.delete();
        System.out.println(flag);
    }
    public static void methd7(){
        File f1=new File("e:\\test\\a.txt");
        System.out.println(f1.exists());//判断文件或文件夹是否存在
        //判断是否是文件
        System.out.println(f1.isFile());
        //判断是否是文件夹
        File f2=new File("e:\\test");
        System.out.println(f2.isDirectory());

    }

listFiles()方法

例子:

public static void method9(){
        File file =new File("e:\\test");
        String[] files =file.list();//获取路径下所有的文件或者文件夹的字符串名称
        for(String s:files){
            File f1=new File(file,s);

            if(f1.getName().equals("a.txt")){
                f1.delete();
            }

        }
    }
    public static void method10(){
        File file =new File("e:\\test");
        File[] files =file.listFiles();
        for(File s:files){
            System.out.println(s);
        }
    }
    

结果演示:

e:\test\b.txt
e:\test\c
e:\test\c.TXT
e:\test\d

注意: 在获取指定目录下的文件或者文件夹时必须满足下面两个条件

   1,指定的目录必须是存在的,

  2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException

文件过滤器

listFiles()方法,空参时,全部显示

有参数时,

FileFilter实现此接口的实例就可过滤文件名

该接口有accept方法

自定义类继承该接口

public class MyFilter implements FileFilter {

    public boolean accept(File pathname) {
        /*String name=pathname.getName().toLowerCase();//先转字符串,再转小写
        boolean flag=name.endsWith(".txt");//查找以什么结尾
        return flag;*/
        //如果是文件夹,则不过滤,加到File数组中
        if(pathname.isDirectory()){
            return true;
        }
        return pathname.getName().toLowerCase().endsWith(".xml");
    }

}

测试类:

public static void main(String[] args) {

        File file =new File("e:\\test");
        File[] files=file.listFiles(new MyFilter());
        //listFiles方法在获取路径时调用accept方法,并将路径传入,
        //如果该方法返回true,那么该文件对象放入File数组,如果是false,则不放入

        //遍历获取到的所有符合条件的文件
        for(File f:files){
            System.out.println(f);
        }
    }

递归   

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

如:

public void method(){
    System.out.println(“递归的演示”);
    //在当前方法内调用自己
    method();
}

    递归参与运行的方法主体不变,而运行的方法的参数变
    注意:递归必须要写一个程序的出口,否则程序无意义

递归的代码演示,计算1-n之间的和

public static void main(String[] args) {
        System.out.println(a(100));

    }
    public static int a(int n){
        if(n == 1){
            return 1;
        }
        return n + a(n-1);
    }
    //a(100)=(100+(a(99)=99+a(98)=98+a(97)=......))

递归打印所有目录中的文件路径

public class FileDemo2 {
    public static void main(String[] args) {
        File file = new File("d:\\test");
        getFileAll(file);
    }
    //获取指定目录以及子目录中的所有的文件
    public static void getFileAll(File file) {
        File[] files = file.listFiles();
        //遍历当前目录下的所有文件和文件夹
        for (File f : files) {
            //判断当前遍历到的是否为目录
            if(f.isDirectory()){
                //是目录,继续获取这个目录下的所有文件和文件夹
                getFileAll(f);
            }else{
                //不是目录,说明当前f就是文件,那么就打印出来
                System.out.println(f);
            }
        }
    }
}

搜索指定目录中.java文件(包含子目录)

自定类继承FileFilter过滤器接口

public class YourFilter implements FileFilter{

    public boolean accept(File pathname) {
        //如果是文件夹,则不进行过滤,认为满足条件加到File数组中
        if(pathname.isDirectory()){
            return true;
        }
        return pathname.getName().toLowerCase().endsWith(".java");
    }

}

测试类:

public class Demo05 {
    public static void main(String[] args) {
        File file=new File("d:\\test");
        getAllFile(file);
    }
    public static void getAllFile(File file){
        File[] files=file.listFiles(new YourFilter());
        for(File f:files){
            if(f.isDirectory()){
                getAllFile(f);
            }else{
                System.out.println(f);
            }
        }
    }
}

原文地址:https://www.cnblogs.com/lzw123-/p/9507914.html

时间: 2024-10-08 23:13:37

File类,递归的相关文章

day23<File类递归练习>

File类递归练习(统计该文件夹大小) File类递归练习(删除该文件夹) File类递归练习(拷贝) File类递归练习(按层级打印) 递归练习(斐波那契数列) 递归练习(1000的阶乘所有零和尾部零的个数) 递归练习(1000的阶乘尾部零的个数) 集合练习(约瑟夫环)   ###23.01_File类递归练习(统计该文件夹大小) 需求:1,从键盘接收一个文件夹路径,统计该文件夹大小 * 从键盘接收一个文件夹路径 1,创建键盘录入对象 2,定义一个无限循环  3,将键盘录入的结果存储并封装成F

黑马程序员-File类+递归的简单应用

Java File类   Java.io.File Java文件类以抽象的方式代表文件名和目录路径名.该类主要用于文件和目录的创建.文件的查找和文件的删除等. File对象代表磁盘中实际存在的文件和目录.通过以下构造方法创建一个File对象. 通过给定的父抽象路径名和子路径名字符串创建一个新的File实例. File(File parent, String child); 通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例. File(String pathname) 根据 pa

java File类-递归遍历目录结构和树状展现

f.listFiles(); //返回目录下的所有子目录和子文件版本一:未加计数器分层次 static void f(File f) { System.out.println(f.getName()); if(f.isDirectory()) { File[] files=f.listFiles(); //如果是目录,返回目录下的所有子目录和子文件 for(File fi:files) { f(fi); } } } 版本二:加计数器分层次 static void f(File f,int lev

Java中如何利用File类递归的遍历指定目录中的所有文件和文件夹

package cuiyuee; import java.io.File; import java.util.ArrayList; import java.util.List; public class GetAllDirectory { public static void showDirectory(File file){ File[] files = file.listFiles(); for(File a:files){ System.out.println(a.getAbsoluteP

[Java] File类 递归 获取目录下所有文件/文件夹

package com.xiwi; import java.io.*; import java.util.*; class file{ public static void main(String args[]){ System.out.println("file Go..."); // 这里改成你要遍历的目录路径 recursiveFiles("F:\\fileText"); System.out.println("file End."); }

异常、Throwable、finally、File类(十九)

1.异常的概述和分类 * A:异常的概述 * 异常就是Java程序在运行过程中出现的错误.* B:异常的分类 * 通过API查看Throwable * Error * 服务器宕机,数据库崩溃等 * ExceptionC:异常的继承体系 * Throwable * Error * Exception * RuntimeException 2.JVM默认是如何处理异常的 * :JVM默认是如何处理异常的 * main函数收到这个问题时,有两种处理方式: * a:自己将该问题处理,然后继续运行 * b

IO流----File类的常用方法

package com.qf.day18_3; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.util.Date; /** * File类 * * @author wgy * */ public class Demo1 { public static void main(String[] args) throws Exception { // separato

Java之File类及递归树形展示目录_20150804

Java之File类及递归树形展示目录 20150804 下面的构造函数可以用来生成File 对象: File(String directoryPath)          File(String directoryPath, String filename)          File(File dirObj, String filename) 这里,directoryPath是文件的路径名,filename 是文件名,dirObj 一个指定目录的File 对象.下面的例子创建了三个文件:f1

java基础知识回顾之javaIO类--File类应用:递归深度遍历文件

代码如下: package com.lp.ecjtu.File.FileDeepList; import java.io.File; public class FileDeepList { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File dir = new File("E:"+File.separator+"demodir

结合File类浅析递归的使用

递归算法就是方法自身直接或者间接地调用到了自身,它是一种写起来很简单,但理解起来不那么简单的算法. 一个功能在被重复地调用,并且运算的结果和上一次的调用有关, 这种时候,可以使用递归. * 注意: * 1.递归一定要明确递归结束的条件,否则会栈溢出 * 2.注意解决问题的递归次数,如果次数过多,也会发生栈溢出. 比较经典的例子有斐波那契数列.汉诺塔等,这里我们谈谈递归在File类中的使用. 一.牛刀小试 先看,两个简单的例子来了解递归. 1 public class RecursionDemo