栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java读取其下所有文件夹与文件路径的方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java读取其下所有文件夹与文件路径的方法

Java读取其下所有文件夹与文件的路径,具体内容如下

如果在f:aa文件夹中,有如下图的文件夹与文件:

那么,在Java中,则如此读取f:/aa下的所有文件路径:

1、首先由于用到了文件与容器类下的ArrayList,所以在开头要引入如下包:

import java.io.*; 
import java.util.*; 

2、方法如下,其中File dirFile除了盘符,比如f:,以外,能够接受一切合法的路径。由于盘符下含有一些系统文件,拒绝访问,因为读取盘符,可能会出现空指针异常。

//这里是仅仅查询当前路径下的所有文件夹、文件并且存放其路径到文件数组 
//由于遇到文件夹不查询其包含所有子文件夹、文件,因此没必要用到递归 
public static ArrayList Dir(File dirFile) throws Exception { 
  ArrayList dirStrArr = new ArrayList(); 
 
  if (dirFile.exists()) { 
    //直接取出利用listFiles()把当前路径下的所有文件夹、文件存放到一个文件数组 
    File files[] = dirFile.listFiles(); 
    for (File file : files) { 
      //如果传递过来的参数dirFile是以文件分隔符,也就是/或者结尾,则如此构造 
      if (dirFile.getPath().endsWith(File.separator)) { 
 dirStrArr.add(dirFile.getPath() + file.getName()); 
      } else { 
 //否则,如果没有文件分隔符,则补上一个文件分隔符,再加上文件名,才是路径 
 dirStrArr.add(dirFile.getPath() + File.separator 
     + file.getName()); 
      } 
    } 
  } 
  return dirStrArr; 
} 

其上的方法,是不读取f:aa下的新建文件夹下的xlsx,如果在读取的过程中,遇到文件夹要同时读取其包含所有子文件夹、文件时,则要用到递归,先设置一个全局的动态数组:

public static ArrayList dirAllStrArr = new ArrayList(); 

然后方法如下:

public static void DirAll(File dirFile) throws Exception { 
 
  if (dirFile.exists()) { 
    File files[] = dirFile.listFiles(); 
    for (File file : files) { 
      //如果遇到文件夹则递归调用。 
      if (file.isDirectory()) { 
 // 递归调用 
 DirAll(file); 
      } else { 
 //如果遇到文件夹则放入数组 
 if (dirFile.getPath().endsWith(File.separator)) { 
   dirAllStrArr.add(dirFile.getPath() + file.getName()); 
 } else { 
   dirAllStrArr.add(dirFile.getPath() + File.separator 
+ file.getName()); 
 } 
      } 
    } 
  } 
} 

其实在读取的过程中,关键是利用listFiles()方法,获取本文件夹下的所有文件列表,之后和《【Java】移动文件夹及其所有子文件与子文件夹》 (点击打开链接), 《【Java】利用文件输入输出流完成把一个文件夹内的所有文件拷贝的另一的文件夹的操作》 (点击打开链接)一样,遇到文件夹则进行递归。

上面整个方法的来起来是这样的一个java文件:

import java.io.*; 
import java.util.*; 
 
public class fileList { 
  // 设置一个全局动态数组,来存放文件路径 
  // 主要遍历文件夹,包含所有子文件夹、文件的情况时,用到递归,所以要这样设置 
  public static ArrayList dirAllStrArr = new ArrayList(); 
 
  // 这里是仅仅查询当前路径下的所有文件夹、文件并且存放其路径到文件数组 
  // 由于遇到文件夹不查询其包含所有子文件夹、文件,因此没必要用到递归 
  public static ArrayList Dir(File dirFile) throws Exception { 
    ArrayList dirStrArr = new ArrayList(); 
 
    if (dirFile.exists()) { 
      // 直接取出利用listFiles()把当前路径下的所有文件夹、文件存放到一个文件数组 
      File files[] = dirFile.listFiles(); 
      for (File file : files) { 
 // 如果传递过来的参数dirFile是以文件分隔符,也就是/或者结尾,则如此构造 
 if (dirFile.getPath().endsWith(File.separator)) { 
   dirStrArr.add(dirFile.getPath() + file.getName()); 
 } else { 
   // 否则,如果没有文件分隔符,则补上一个文件分隔符,再加上文件名,才是路径 
   dirStrArr.add(dirFile.getPath() + File.separator 
+ file.getName()); 
 } 
      } 
    } 
    return dirStrArr; 
  } 
 
  public static void DirAll(File dirFile) throws Exception { 
 
    if (dirFile.exists()) { 
      File files[] = dirFile.listFiles(); 
      for (File file : files) { 
 // 如果遇到文件夹则递归调用。 
 if (file.isDirectory()) { 
   // 递归调用 
   DirAll(file); 
 } else { 
   // 如果遇到文件夹则放入数组 
   if (dirFile.getPath().endsWith(File.separator)) { 
     dirAllStrArr.add(dirFile.getPath() + file.getName()); 
   } else { 
     dirAllStrArr.add(dirFile.getPath() + File.separator 
  + file.getName()); 
   } 
 } 
      } 
    } 
  } 
 
  public static void main(String[] args) throws Exception { 
    File dirFile = new File("f:/aa"); 
    System.out.println(Dir(dirFile)); 
    DirAll(dirFile); 
    System.out.println(dirAllStrArr); 
  } 
} 

运行结果如下:

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/141417.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号