遍历文件夹
-------------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()) {
//File的listFiles()方法 返回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) 编辑 收藏 举报