java遍历目录二种方法

我是通过分割字符串来求得其所有子目录相对于根目录的深度,然后再减去输入目录相对于根目录的深度,就得到了输入目录的深度

方法一

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

方法二

public static void printdirectory(file f,int depth){
  if(!f.isdirectory()){//如果不是目录,则打印输出
   system.out.println(gettap(depth)+f.getname());
  }else{
   file[] fs=f.listfiles();
   system.out.println(gettap(depth)+f.getname());
   depth++;
   for(int i=0;i<fs.length;++i){
    file file=fs[i];
    printdirectory(file,depth);
   }
  }
}

其中gettap方法是辅助方法,目的是使输出具有一定的层次关系,方法定义如下:

private static string gettap(int depth){
  stringbuffer tap=new stringbuffer();
  for(int i=0;i<depth;i++){
   tap.append("------");
  }
  return tap.tostring();
}

 

public static void main(string[] args){
  file f=new file("test");
  printdirectory(f,0);
}

test
------11
------------111
------------------1111.txt
------------------1112.txt
------------112.txt
------12
------------123.txt
------13.txt

总结问题

问题一:java中遍历目录时,总是转化成文件数组,但是如果目录下文件超过10万个,这时就容易死机?有没有更好的办法,听说c++提供了更好的办法,java中我没找到?

 

问题二:,java中,能不能遍历目录下特定类型的文件??比如我只遍历 *.jpg的文件。

时间: 2024-12-05 16:18:17

java遍历目录二种方法的相关文章

java解析xml二种方法

java解析xml二种方法 配置文件为: <?xml version="1.0" encoding="utf-8"?> <config>     <point name="test1">         <name>zhang3</name>         <address>abcdefg</address>         <email>a@b.c

java map遍历的四种方法总结_java

整理了关于java中map的遍历的四种方法: import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.Set;publicclassMapTest{privateMap<String,String> map;publicMapTest(){  map =newHashMap<String,String>();

java发送url请求获取返回值的二种方法_java

下面提供二种方法会使用java发送url请求,并获取服务器返回的值 第一种方法: 复制代码 代码如下: import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFor

php 遍历对象属性二种方法

php教程 遍历对象属性二种方法 /* 本文章下面我们要为你提供二种关于遍历对象属性方法,并且举例说明遍历对象属性在php中的应用. */ class foo {     private $a;     public $b = 1;     public $c;     private $d;     static $e;        public function test() {         var_dump(get_object_vars($this));     } } $test

linux系统下php安装mbstring扩展的二种方法

 这篇文章主要介绍了linux系统环境下,php安装mbstring扩展的二种方法,大家参考使用吧 1.执行   代码如下: yum install php-mbstring     2. 修改php.ini (这一步非常重要, 部分lxadmin版本无法自动修改)   代码如下: echo 'extension=mbstring.so' >>/etc/php.ini #更具php安装目录而定     3. 重启web service   如果是apache: service httpd re

c#连接mysql数据库的二种方法

c#连接mysql教程数据库教程的二种方法 mysql提供的是一个dll文件--"mysql.data.dll",目前我用的就是这个dll文件,将这个文件(见附件)放到网站的bin目录下,就可以使用了.而且和sql server的用法并没有太大的出入,只是应用的名称不一样而已. 代码如下: 1.default.asp教程x: <%@ page language="c#" autoeventwireup="true"  codefile=&q

MySQL使用二进制日志来恢复数据二种方法

MySQL使用二进制日志来恢复数据二种方法 如果MySQL服务器启用了二进制日志,你可以使用mysql教程binlog工具来恢复从指定的时间点开始 (例如,从你最后一次备份)直到现在或另一个指定的时间点的数据.关于启用二进制日志的信息,参见5.11.3节,"二进制日志".对于 mysqlbinlog的详细信息,"mysqlbinlog:用于处理二进制日志文件的实用工具". 要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名.一般可以从选项文件(即m

php遍历数组几种方法

在php教程遍历数据我们常用的有二种方法 ,利用了for 与foreach来操作,前者是知道数据长度,然后 后者可以不知道数据长度,下面我们来分别举例说明. <? $array = array(1,2,3,4,5,'www.111cn.net','www.111cn.net'); for( $i=0;$i<count($array);$i++) {  echo $array[$i].'<br />'; } 输出结果如下 1 2 3 4 5 www.111cn.net www.111

深入linux下遍历目录树的方法总结分析_C 语言

前几天需要实现对整个目录树的遍历,查阅了相关的一些资料.开始找到的原始的方法是使用readdir()与lstat()函数实现递归遍历,后来发现linux对于目录遍历这种最常用的操作已经提供了很完善的接口:ftw()与nftw().下面就这两种方法具体说明一下.1.手动实现递归1.1 stat()函数族stat函数族包括:stat,fstat以及lstat函数,都是向用户返回文件的属性信息(元数据). 复制代码 代码如下: view plaincopy to clipboardprint?#inc