欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JAVA实现遍历文件夹下的所有文件(递归调用和非递归调用)

程序员文章站 2024-03-07 19:27:51
java 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traversefolder1(string pa...

java 遍历文件夹下的所有文件(递归调用和非递归调用)

1.不使用递归的方法调用.

public void traversefolder1(string path) {
    int filenum = 0, foldernum = 0;
    file file = new file(path);
    if (file.exists()) {
      linkedlist<file> list = new linkedlist<file>();
      file[] files = file.listfiles();
      for (file file2 : files) {
        if (file2.isdirectory()) {
          system.out.println("文件夹:" + file2.getabsolutepath());
          list.add(file2);
          filenum++;
        } else {
          system.out.println("文件:" + file2.getabsolutepath());
          foldernum++;
        }
      }
      file temp_file;
      while (!list.isempty()) {
        temp_file = list.removefirst();
        files = temp_file.listfiles();
        for (file file2 : files) {
          if (file2.isdirectory()) {
            system.out.println("文件夹:" + file2.getabsolutepath());
            list.add(file2);
            filenum++;
          } else {
            system.out.println("文件:" + file2.getabsolutepath());
            foldernum++;
          }
        }
      }
    } else {
      system.out.println("文件不存在!");
    }
    system.out.println("文件夹共有:" + foldernum + ",文件共有:" + filenum);

  }

2.使用递归的方法调用.

public void traversefolder2(string path) {

    file file = new file(path);
    if (file.exists()) {
      file[] files = file.listfiles();
      if (files.length == 0) {
        system.out.println("文件夹是空的!");
        return;
      } else {
        for (file file2 : files) {
          if (file2.isdirectory()) {
            system.out.println("文件夹:" + file2.getabsolutepath());
            traversefolder2(file2.getabsolutepath());
          } else {
            system.out.println("文件:" + file2.getabsolutepath());
          }
        }
      }
    } else {
      system.out.println("文件不存在!");
    }
  }

3,

public static list<file> getfilelist(string strpath) {
    file dir = new file(strpath);
    file[] files = dir.listfiles(); // 该文件目录下文件全部放入数组
    if (files != null) {
      for (int i = 0; i < files.length; i++) {
        string filename = files[i].getname();
        if (files[i].isdirectory()) { // 判断是文件还是文件夹
          getfilelist(files[i].getabsolutepath()); // 获取文件绝对路径
        } else if (filename.endswith("avi")) { // 判断文件名是否以.avi结尾
          string strfilename = files[i].getabsolutepath();
          system.out.println("---" + strfilename);
          filelist.add(files[i]);
        } else {
          continue;
        }
      }

    }
    return filelist;
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。