Java遍历文件夹的2种方法

A.不使用递归的方法:

import java.io.File;
import java.util.LinkedList;
public class FileSystem {
public static void main(String[] args) {
        long a = System.currentTimeMillis();
        LinkedList list = new LinkedList();
        File dir = new File("c:\\Program Files\\Java\\");
        File file[] = dir.listFiles();
        for (int i = 0; i < file.length; i++) {
            if (file[i].isDirectory())
                list.add(file[i]);
            else
                System.out.println(file[i].getAbsolutePath());
        }
        File tmp;
        while (!list.isEmpty()) {
           tmp = (File)list.removeFirst();
            if (tmp.isDirectory()) {
                file = tmp.listFiles();
                if (file == null)
                    continue;
                for (int i = 0; i < file.length; i++) {
                    if (file[i].isDirectory())
                        list.add(file[i]);
                    else
                        System.out.println(file[i].getAbsolutePath());
                }
            } else {
                System.out.println(tmp.getAbsolutePath());
            }
        }
        System.out.println(System.currentTimeMillis() - a);
    }
}

B.使用递归的方法:

import java.io.File;
import java.util.ArrayList;
public class FileSystem{
    private static ArrayList filelist = new ArrayList();
    public static void main(String[] args) {
        long a = System.currentTimeMillis();
        refreshFileList("c:\\Program Files\\Java\\");
        System.out.println(System.currentTimeMillis() - a);
    }
    public static void refreshFileList(String strPath) {
        File dir = new File(strPath);
        File[] files = dir.listFiles();
        if (files == null)
            return;
        for (int i = 0; i < files.length; i++) {
            if (files[i].isDirectory()) {
                refreshFileList(files[i].getAbsolutePath());
            } else {
                String strFileName = files[i].getAbsolutePath().toLowerCase();
                System.out.println("---"+strFileName);
                filelist.add(files[i].getAbsolutePath());
            }
        }
    }
}

一个方法的方法体实现里再次调用了方法本身,就是递归方法。递归一定要向已知方向递归。

结论:经过测试,使用递归的方法B性能相对好一些。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索递归
, file
, 方法
, system
, 递归遍历java
, println
, I方法
java遍历文件夹
java 遍历文件夹、java递归遍历文件夹、java循环遍历文件夹、java 遍历ftp文件夹、java sftp 遍历文件夹,以便于您获取更多的相关知识。

时间: 2024-10-01 08:51:27

Java遍历文件夹的2种方法的相关文章

Java中遍历文件夹的2种方法

A.不使用递归:       import java.io.File; import java.util.LinkedList; public class FileSystem { public static void main(String[] args) { long a = System.currentTimeMillis(); LinkedList list = new LinkedList(); File dir = new File("c:""java"

Java追加文件内容的三种方法

Java追加文件内容的三种方法 /** * 描述:追加内容到文件末尾 * @author Roger Federer * */ public static void main(String[] args) throws IOException { File fileOrFilename = new File("d://text.txt"); // 方法 一 //追加文件:使用FileOutputStream,在构造FileOutputStream时,把第二个参数设为true Buffe

php遍历目录与文件夹的几种方法

 遍历目录或遍历目录下指定类型的文件,这是每一个童鞋在写程序的时候难免会用到的.PHP本身也提供了很多灰常有用的函数,正确地使用它们,不会有错滴. 下面就我个人学习过程中的一些总结,希望对想学PHP的童鞋有所帮助. //本函数可以列出指定目录下所有的文件(包括子目录下的) 代码如下 function getfiles($path){ foreach(scandir($path) as $afile) { if($afile=='.'||$afile=='..') continue; if(is_

eclipse打开当前文件所在文件夹的两种方法

很郁闷,现在的MyEclipse越来越大,越来越慢,没办法,打算回归Eclipse的怀抱,还好现在的Eclipse有很多功能可以直接替代Myeclipse.:) 先写一个最常用的打开文件夹吧.以后的等我总结了并证实好用了再说:)        如果你经常需要在Eclipse里打开相关资源文件所在的文件夹,比较麻烦,要右键,属性,在Location一栏中把所在的文件夹拷贝一下,然后再去资源管理器里输入这个路径,回车,打开它. 解决方法: 用EasyExplorer插件,有了这个插件就可以很方便地打

探讨PHP删除文件夹的三种方法_php技巧

1.递归法 复制代码 代码如下: deleteDir($dir){if (rmdir($dir)==false && is_dir($dir)) {    if ($dp = opendir($dir)) {     while (($file=readdir($dp)) != false) {      if (is_dir($file) && $file!='.' && $file!='..') {       deleteDir($file);    

java读取文件内容的三种方法代码片断分享(java文件操作)_java

复制代码 代码如下: try {           // 方法一           BufferedReader br = new BufferedReader(new FileReader(new File(                   "D:\\1.xls")));           // StringBuilder bd = new StringBuilder();           StringBuffer bd = new StringBuffer();   

C++遍历文件夹下文件的方法_C 语言

本文实例讲述了C++遍历文件夹下文件的方法.分享给大家供大家参考.具体如下: #include <windows.h> #include <stdio.h> #include <string.h> #define LEN 1024 // 深度优先递归遍历目录中所有的文件 BOOL DirectoryList(LPCSTR Path) { WIN32_FIND_DATA FindData; HANDLE hError; int FileCount = 0; char Fi

C#遍历文件夹及其子目录的完整实现方法_C#教程

本文实例讲述了C#遍历文件夹及其子目录的完整实现方法.分享给大家供大家参考,具体如下: using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Security.AccessControl; using System.Text; namespace ConsoleApplication1 { class Program { static void

三款java删除文件夹实现方法

三款java删除文件夹实现方法第一款可以删除文件夹以及文件夹下的子目录与文件 ,后面两个实例只能删除文件夹了. import java.io.file; private void deletefile(file file){    if(file.exists()){     if(file.isfile()){      file.delete();     }else if(file.isdirectory()){      file files[] = file.listfiles();