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

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

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

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

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

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

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

//这里是仅仅查询当前路径下的所有文件夹、文件并且存放其路径到文件数组
//由于遇到文件夹不查询其包含所有子文件夹、文件,因此没必要用到递归
public static ArrayList<String> Dir(File dirFile) throws Exception {
  ArrayList<String> dirStrArr = new ArrayList<String>(); 

  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<String> dirAllStrArr = new ArrayList<String>();

然后方法如下:

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<String> dirAllStrArr = new ArrayList<String>(); 

  // 这里是仅仅查询当前路径下的所有文件夹、文件并且存放其路径到文件数组
  // 由于遇到文件夹不查询其包含所有子文件夹、文件,因此没必要用到递归
  public static ArrayList<String> Dir(File dirFile) throws Exception {
    ArrayList<String> dirStrArr = new ArrayList<String>(); 

    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);
  }
}

运行结果如下:

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

您可能感兴趣的文章:

  • Java如何读取XML文件 具体实现
  • Java读取Excel文件内容的简单实例
  • java实现读取txt文件中的内容
  • Java数据导入功能之读取Excel文件实例
  • java读取csv文件示例分享(java解析csv文件)
  • java中读取配置文件中数据的具体方法
  • Java读取文件的简单实现方法
  • Java实现按行读取大文件
  • Java读取、写入文件如何解决乱码问题
  • java读取csv文件和写csv示例分享
(0)

相关推荐

  • Java读取Excel文件内容的简单实例

    借助于apathe的poi.jar,由于上传文件不支持.jar所以请下载后将文件改为.jar,在应用程序中添加poi.jar包,并将需要读取的excel文件放入根目录即可 本例使用java来读取excel的内容并展出出结果,代码如下: 复制代码 代码如下: import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundExceptio

  • Java如何读取XML文件 具体实现

    今天的CSDN常见问题来讲解下在Java中如何读取XML文件的内容. 直接上代码吧,注释写的很清楚了! 复制代码 代码如下: import java.io.*;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;im

  • Java读取、写入文件如何解决乱码问题

    读取文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式而导致的乱码的问题.首先,明确一点,文本文件与二进制文件的概念与差异. 文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码.ANSI编码等等.二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码.) 因此可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8).而二进制文件可看成是变长编码的,因为是值编码嘛,多少

  • java读取csv文件和写csv示例分享

    复制代码 代码如下: import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.

  • Java数据导入功能之读取Excel文件实例

    在编程中经常需要使用到表格(报表)的处理主要以Excel表格为主.下面给出用java读取excel表格方法: 1.添加jar文件 java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件.下载地址:http://www.andykhan.com/jexcelapi/ 2.jxl对Excel表格的认识 (1)每个单元格的位置认为是由一个二维坐标(i,j)给定,其中i表示列,j表示

  • Java读取文件的简单实现方法

    本文实例讲述了Java读取文件的简单实现方法,非常实用.分享给大家供大家参考之用.具体方法如下: 这是一个简单的读取文件的代码,并试着读取一个log文件,再输出. 主要代码如下: import java.io.*; public class FileToString { public static String readFile(String fileName) { String output = ""; File file = new File(fileName); if(file.

  • java中读取配置文件中数据的具体方法

    1.先在项目中创建一个包(如:config),再创建一个配置文件(如:a.properties),添加配置信息如下:比如: 复制代码 代码如下: name=kakaage=28 2.代码: 复制代码 代码如下: import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class PropertyTest { public static void main(String[

  • java读取csv文件示例分享(java解析csv文件)

    复制代码 代码如下: import java.io.*;import java.util.*;public class HandleCsv {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(   new InputStreamReader(    new FileInputStream("test.csv")   )); String li

  • Java实现按行读取大文件

    Java实现按行读取大文件 String file = "F:" + File.separator + "a.txt"; FileInputStream fis = new FileInputStream(file); RandomAccessFile raf = new RandomAccessFile(new File(file),"r"); String s ; while((s =raf.readLine())!=null){ Syste

  • java实现读取txt文件中的内容

    我们先来看个例子 import java.io.*; /** * Created by liguoqing on 2016/3/28. */ public class ReadTxtFile { public static void readTxt(String filePath) { try { File file = new File(filePath); if(file.isFile() && file.exists()) { InputStreamReader isr = new

随机推荐