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

  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 = 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 FileSystem1 {

  private static ArrayList filelist = new ArrayList();

  public static void main(String[] args) {

  long a = System.currentTimeMillis();

  refreshFileList("c:""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性能相对好一些。

时间: 2024-11-01 01:45:36

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:\\Program Files\\Java\\&q

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插件,有了这个插件就可以很方便地打

Java中接收键盘输入的三种方法_java

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class EnterTest { public static void main(String[] args) { //主方法 CharTest(); //调用System.in方法 ReadTest(); //调用ReadTest方法 Scan

探讨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);    

图像处理-用C++遍历文件夹连续显示的时候,按了控件之后直接显示最后一幅图像,这有可能是什么原因吗?

问题描述 用C++遍历文件夹连续显示的时候,按了控件之后直接显示最后一幅图像,这有可能是什么原因吗? 6C 用C++遍历文件夹连续显示的时候,通过控件来控制的,但是按了控件之后直接显示最后一幅图像,这有可能是什么原因吗?求各位大神给给建议,实在是搞不懂 解决方案 可能是你循环的时候没有每次分配新的内存,导致循环来循环去,图片都加载到同一个位图对象中,所以后面的把前面的冲了. 解决方案二: 最好给出相关的代码 如果是Windows平台,我怀疑是你是在主线程中遍历文件夹,按下控件,消息处理完毕界面才

在文件数量过多的情况下java怎么获取文件夹下第一个文件并且不使用List遍历

问题描述 在文件数量过多的情况下java怎么获取文件夹下第一个文件并且不使用List遍历 在文件数量过多的情况下java怎么获取文件夹下第一个文件并且不使用List遍历,防止内存溢出 解决方案 你看到的文件夹下面的第一个文件是操作系统的,如果用Java的API取出来,顺序是乱的,而且文件数量过多能多多少呢?上百个.?你可以只遍历文件名 ,或者在取文件的时候对文件进行一个排序,然后在取对应的文件内容. 解决方案二: 在java中如何遍历某个路径下的所有文件夹和文件java遍历文件夹中所有文件jav

C++中如何深度搜索遍历文件夹

深度优先搜索遍历文件夹所有文件, 由于使用windows的函数, 必须要使用C语言; 注意字符集的问题,使用"#undef UNICODE", 屏蔽因字符集所产生的问题; 使用vector<string>存储所有文件名, 因为要递归使用, 所以需要设置为静态,返回shared_ptr的指针 代码如下: /************************************************* File: main.cpp Copyright: C.L.Wang A

Java中实现文件上传下载的三种解决方案(推荐)_java

java文件上传与文件下载是程序开发中比较常见的功能,下面通过本文给大家介绍Java中实现文件上传下载的三种解决方案,具体详情如下所示: 第一点:Java代码实现文件上传 FormFile file=manform.getFile(); String newfileName = null; String newpathname=null; String fileAddre="/numUp"; try { InputStream stream = file.getInputStream(