File 类、递归

1.file类

当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作。

当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作。

因此我们把这种输入和输出动作称为IO操作。

 

file类的方法

 

 

 

public class FileMethodDemo {

public static void main(String[] args) {

//创建文件对象

File file = new File("Test22.java");

//获取文件的绝对路径,即全路径

String absPath = file.getAbsolutePath();

//File中封装的路径是什么获取到的就是什么。

String path = file.getPath();

//获取文件名称

String filename = file.getName();

//获取文件大小

long size = file.length();

 

System.out.println("absPath="+absPath);

System.out.println("path="+path);

System.out.println("filename="+filename);

System.out.println("size="+size);

}

文件和文件夹的创建删除

 

 

public class FileMethodDemo2 {

public static void main(String[] args) throws IOException {

// 对文件或者文件加进行操作。

File file = new File("e:\\file.txt");

// 创建文件,如果文件不存在,创建 true 如果文件存在,则不创建 false。 如果路径错误,IOException

boolean b1 = file.createNewFile();

System.out.println("b1=" + b1);

//-----------删除文件操作-------注意:不去回收站。慎用------

 boolean b2 = file.delete();

 System.out.println("b2="+b2);

 

//-----------需要判断文件是否存在------------

 boolean b3 = file.exists();

 System.out.println("b3="+b3);

 

//-----------对目录操作 创建,删除,判断------------

File dir = new File("e:\\abc");

//mkdir()创建单个目录。//dir.mkdirs();创建多级目录

boolean b4 = dir.mkdir();

System.out.println("b4="+b4);

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

boolean b5 = dir.delete();

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

System.out.println("b5=" + b5);

 

//-----------判断文件,目录------------

File f = new File("e:\\javahaha");// 要判断是否是文件还是目录,必须先判断存在。

// f.mkdir();//f.createNewFile();

System.out.println(f.isFile());

System.out.println(f.isDirectory());

}

1.1 listFiles()方法介绍

 

 

public class FileMethodDemo3 {

public static void main(String[] args) {

File dir = new File("e:\\java_code");

//获取的是目录下的当前的文件以及文件夹的名称。

String[] names = dir.list();

for(String name : names){

System.out.println(name);

}

//获取目录下当前文件以及文件对象,只要拿到了文件对象,那么就可以获取其中想要的信息

File[] files = dir.listFiles();

for(File file : files){

System.out.println(file);

}

}

}

 

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

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

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

 

       文件过滤器

 

复制代码
public class MyFilter implements FileFilter {

    @Override
    public boolean accept(File pathname) {
        
        //获取文件名
        String name=pathname.getName();
        //获取文件拓展名
        //转小写
        //判断文件是否以txt结尾
        return name.toLowerCase().endsWith(".txt");
    }

}
复制代码

 

复制代码
public static void main(String[] args) {
    File file=new File("D:\\io0512");
    File[] files=file.listFiles(new MyFilter());
    for(File f:files){
        System.out.println(f);
    }
复制代码

 

 

 

     递归

 

复制代码
public static void main(String[] args) {
    System.out.println(a(3));
}
//递归计算1-100的和
public static int  a(int i){
    if(i==1){
        return 1;
    }else{
        return i+a(i-1);
    }
}
复制代码

 

递归计算斐波那契数列(前两个数相加等于第三个数)

 

复制代码
public static void main(String[] args) {
    System.out.println(get(12));
}
public static int get(int n){
    if(n==1||n==2){
        return 1;
    }
    return get(n-1)+get(n-2);
}
复制代码

 

递归应用

 

递归查询所有文件

 

复制代码
public class Demo03 {
public static void main(String[] args) {
    get(new File("D:\\io0512"));
}
public static void get(File dir){
    //当前目录这一级的文件和文件夹对象数组
    File[] files=dir.listFiles();
    for(File i:files){
        if(i.isDirectory()){//如果file对象时文件夹,继续进行遍历
            System.out.println(i+"---");//打印文件夹
            get(i);
        }else{
        //如果不是打印
        System.out.println(i);//打印文件
        }
    }
}
}
复制代码

 

 

 

递归查询所有以txt结尾的文件

 

复制代码
public class Demo04 {
public static void main(String[] args) {
    get(new File("D:\\io0512"));
}
public static void get(File dir){
    //当前目录这一集的文件和文件夹对象数组
    File[] files=dir.listFiles(new Zi());
    for(File i:files){
        if(i.isDirectory()){//如果file对象时文件夹,继续进行遍历
            //System.out.println(i+"---");//打印文件夹
            get(i);
        }else{
        //如果不是打印
        System.out.println(i);//打印文件
    }}
}
}
复制代码

 

复制代码
public class Zi implements FileFilter{

    
    public boolean accept(File pathname) {
        if(pathname.isDirectory()){
            return true;
        }
        String i=pathname.getName();
        return i.toLowerCase().endsWith(".txt");
    }

}
复制代码

 

posted @ 2020-08-03 14:26  2020小白  阅读(174)  评论(0)    收藏  举报