zoukankan      html  css  js  c++  java
  • 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");
        }
    
    }
    复制代码
  • 相关阅读:
    嗅探对方机器,获取机器键盘记录
    python识别图片生成字符模式
    栈 详解
    解决 No result defined for action and result input 异常
    解决hibernate保存数据到mysql中出现乱码问题
    懒加载异常 org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role
    解决springjava.lang.IllegalStateException: BeanFactory not initialized or already closed
    Android Fragment 详解
    脏读|不可重复度|幻读的理解以及Spring定义的五种事务隔离级别
    Spring中的context:annotation-config作用
  • 原文地址:https://www.cnblogs.com/marswenze/p/13426070.html
Copyright © 2011-2022 走看看