Fork me on GitHub

遍历文件夹

-------------siwuxie095

   

   

   

   

   

   

   

工程结构目录如下:

   

   

   

   

代码:

   

package com.siwuxie095.filescan;

   

import java.io.File;

   

public class Scanner {

   

public static void main(String[] args) {

 

//如果要打印当前工程文件夹 FileScanner 下的所有数据:

//

//第一个参数传入一个匿名对象,这里是文件对象,其中的路径有两种写法

//第一种做法:传入绝对路径:E:/workspace/FileScanner (注意:要使用斜杠/,而不能使用 反斜杠\

//第二种做法:如果不指定绝对路径,则默认使用相对路径

//相对路径获取当前的文件夹 FileScanner 的方法:../FileScanner

//其中 ../ 是获取当前路径的上一级文件,对应 workspace 文件夹,再加上 FileScanner

// 获取上一层(workspace)中的文件夹 FileScanner,也即项目本身

//

//第二个参数,即缩进量,设为 1

printFiles(new File("E:/workspace/FileScanner"), 1);

}

   

 

 

/**

* 因为主方法使用了static 所以 print()也要加 static 才能被调用

* (静态方法不能调用/访问非静态的方法和属性)

*

* 传入一个文件对象,实际上是路径,因为是遍历文件夹,命名为 dir

* 再传入一个参数 tab 作为缩进量,使用缩进来明确层次结构

*

* @param dir

* @param tab

*/

public static void printFiles(File dir,int tab) {

 

//先判断dir是否是路径

if (dir.isDirectory()) {

 

//FilelistFiles()方法 返回File对象的数组,

//其中包含了当前目录下的子文件和子文件夹结构

//创建一个File类型的数组 next[]来接收返回值

File next[]=dir.listFiles();

 

 

//使用for循环来遍历当前的数组

for (int i = 0; i < next.length; i++) {

 

//在输出之前先缩进,根据tab的数量来确定缩进

for (int j = 0; j < tab; j++) {

System.out.print("|--");

}

 

//无论当前的文件是文件还是文件夹,都输出其名称 getName()

System.out.println(next[i].getName());

 

//如果是文件夹,需要再列出其下一级的所有的元素(内部的结构)

if (next[i].isDirectory()) {

//循环调用,且下一级文件结构要多缩进一个 tab+1

printFiles(next[i], tab+1);

}

}

}

}

}

   

   

运行一览:

   

   

   

   

   

注意:隐藏文件也会被打印出来

 

应用:可以使用这种方法来查看系统中的所有文件(包括隐藏文件)

   

   

   

【made by siwuxie095】

posted on 2017-03-24 17:34  siwuxie095  阅读(168)  评论(0编辑  收藏  举报

导航