使用递归方式遍历指定磁盘路径下的文件及文件夹
2012-01-30 17:32
716 查看
package com.javase.io2;
import java.io.File;
import java.util.ArrayList;
public class FileTest {
//确定当前目录是多少层
private static int time;
//遍历磁盘某一路径中的文件
public static void recursionFile(File file){
//递归的出口,如果传进来的是一个文件,或者传进来的是一个空目录,则停止
//如果传进来的是一个文件夹,文件夹下面有文件下或文件,则显示出文件夹的名称和文件夹下的文件名称
if(file.isFile()||0==file.listFiles().length){
return;
}else{
File[] files = file.listFiles();
files = sort(files);
for(File f : files){
StringBuffer output = new StringBuffer();
if(f.isFile()){
//如果是文件,首先显示一个缩进,但是缩进多少,需要获取一个表示进第几层目录的数字,
//用这个数字来决定缩进量
output.append(getTabs(time));
output.append(f.getName());
}else{
output.append(getTabs(time));
output.append(f.getName()).append("文件夹");
}
System.out.println(output.toString());
//如果当前对象是文件夹,则递归调用显示文件的方法,注意先增加缩进量,然后遍历,遍历一个,需要将平级
//的
if(f.isDirectory()){
time++;
recursionFile(f);
time--;
}
}
}
}
//对文件夹下的文件夹与文件进行排序,使得文件夹放在文件的前面,并将排序结果返回
public static File[] sort(File[] files){
ArrayList<File> sorted =new ArrayList<File>();
for(File f : files){
if(f.isDirectory()){
sorted.add(f);
}
}
for(File f : files){
if(f.isFile()){
sorted.add(f);
}
}
return sorted.toArray(new File[files.length]);
}
public static String getTabs(int time){
StringBuffer buffer = new StringBuffer();
for(int i = 0 ; i < time ; i++){
buffer.append("\t");
}
return buffer.toString();
}
@SuppressWarnings("static-access")
public static void main(String[] args) {
new FileTest().recursionFile(new File("D:\\tools"));
}
}
import java.io.File;
import java.util.ArrayList;
public class FileTest {
//确定当前目录是多少层
private static int time;
//遍历磁盘某一路径中的文件
public static void recursionFile(File file){
//递归的出口,如果传进来的是一个文件,或者传进来的是一个空目录,则停止
//如果传进来的是一个文件夹,文件夹下面有文件下或文件,则显示出文件夹的名称和文件夹下的文件名称
if(file.isFile()||0==file.listFiles().length){
return;
}else{
File[] files = file.listFiles();
files = sort(files);
for(File f : files){
StringBuffer output = new StringBuffer();
if(f.isFile()){
//如果是文件,首先显示一个缩进,但是缩进多少,需要获取一个表示进第几层目录的数字,
//用这个数字来决定缩进量
output.append(getTabs(time));
output.append(f.getName());
}else{
output.append(getTabs(time));
output.append(f.getName()).append("文件夹");
}
System.out.println(output.toString());
//如果当前对象是文件夹,则递归调用显示文件的方法,注意先增加缩进量,然后遍历,遍历一个,需要将平级
//的
if(f.isDirectory()){
time++;
recursionFile(f);
time--;
}
}
}
}
//对文件夹下的文件夹与文件进行排序,使得文件夹放在文件的前面,并将排序结果返回
public static File[] sort(File[] files){
ArrayList<File> sorted =new ArrayList<File>();
for(File f : files){
if(f.isDirectory()){
sorted.add(f);
}
}
for(File f : files){
if(f.isFile()){
sorted.add(f);
}
}
return sorted.toArray(new File[files.length]);
}
public static String getTabs(int time){
StringBuffer buffer = new StringBuffer();
for(int i = 0 ; i < time ; i++){
buffer.append("\t");
}
return buffer.toString();
}
@SuppressWarnings("static-access")
public static void main(String[] args) {
new FileTest().recursionFile(new File("D:\\tools"));
}
}
相关文章推荐
- 递归的一些方法使用:深度遍历路径中的所有文件和目录,删除一个有文件的文件夹
- 使用for循环来遍历某个路径下的文件及文件夹
- CFileFind类遍历查找文件夹下的所有文件,或者指定文件,并使用ofstream输出到制定文本
- java基础之File对象中的FilenameFilter文件过滤以及递归列出指定文件夹路径下的所有文件和所有文件夹
- 使用递归方法遍历文件夹下的所有文件
- 记住上次遍历文件夹时的路径,递归遍历目录下的文件
- pom文件中使用指定路径的方式配置jar包依赖
- Node.js 使用递归实现遍历文件夹中所有文件
- 使用php scandir()函数遍历文件夹并输出所有文件路径
- 非递归遍历文件夹下指定类型的文件-Java栈实现
- 非递归遍历指定文件夹下的所有文件及其子文件夹
- PHP递归遍历指定文件夹内的文件
- Java中如何利用File类递归的遍历指定目录中的所有文件和文件夹
- java 使用递归获取指定文件路径目录,删除指定的文件后缀(可扩展,根据具体需要的删除的后缀进行配置)~~
- Android递归遍历文件夹中指定格式文件
- 递归遍历磁盘下的某一文件夹中所有文件,并copy文件生成文件和带文件夹的文件
- Node.js使用递归实现遍历文件夹中所有文件
- 递归遍历文件夹查找指定文件
- 以递归方式列出指定路径的文件夹目…
- 递归遍历磁盘下的某一文件夹中所有文件,并copy文件生成文件和带文件夹的文件