java遍历磁盘目录

使用JAVA将遍历的目录按照树形缩进的样子打印到控制台。代码如下:


import java.io.File;

public class FileName {
    //遍历及产生缩进
    //两个参数,文件路径或文件名,以当前目录为父目录统计目录的深度(即函数递归的次数)
    public void putfilename(String filename, int count){
        count++;
        File file = new File(filename);
        if(file.isFile()){
            for(int k=0;k<count-1;k++){
                System.out.print("|   ");
            }
            System.out.println(file.getName());
        } else if (file.isDirectory() && this.getPermission(file)){
            File[] list = file.listFiles();
            for(int i=0; i<list.length; i++){
                if(list[i].isDirectory()){
                    for(int k = 0; k < count; k++){
                        System.out.print("|   ");
                    }
                    System.out.println(list[i].getName());
                }
                //在这儿进行递归调用
                putfilename(list[i].getPath(), count);
            }
        }
    }

    //判断是否有读取文件的权限
    public boolean getPermission(File file){
        boolean flag = false;
        try {
            File[] list = file.listFiles();
            @SuppressWarnings("unused")
            //此方法的关键点,看这句话是否产生异常(产生异常则不能访问,没有异常则正常访问)
            int i = list.length;
            flag = true;
        } catch (Exception e) {
            flag = false;
        }
        return flag;
    }

    //生成main方法调用
    public static void main(String[] args) {
        //指定要遍历的目录
        String filename = "E:/";
        FileName fn = new FileName();
        fn.putfilename(filename, -1);
    }
}

另外,还可以将遍历的目录名称树形缩进结构打印在,文本文件中,此处采用当前时间为文件名,代码:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileNameToFile {
    static File test = null;
    //遍历及产生缩进
    public void putfilename(String filename, int count){
        count++;
        File file = new File(filename);
        try {
            if(file.isFile()){
                FileWriter fw = new FileWriter(test,true);
                BufferedWriter bw = new BufferedWriter(fw);
                for(int k=0;k<count-1;k++){
                    bw.write("|   ");
                }
                bw.write(file.getName());
                bw.newLine();
                fw.flush();
                bw.close();
            } else if (file.isDirectory() && this.getPermission(file)){
                File[] list = file.listFiles();
                for(int i=0; i<list.length; i++){
                    if(list[i].isDirectory()){
                        FileWriter fw = new FileWriter(test,true);
                        BufferedWriter bw = new BufferedWriter(fw);
                        for(int k = 0; k < count; k++){
                            bw.write("|   ");
                        }
                        bw.write(list[i].getName());
                        bw.newLine();
                        fw.flush();
                        bw.close();
                    }
                    //在此处进行递归调用
                    putfilename(list[i].getPath(), count);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //判断是否有读取文件的权限
    public boolean getPermission(File file){
        boolean flag = false;
        try {
            File[] list = file.listFiles();
            @SuppressWarnings("unused")
            //此方法的关键点,看这句话是否产生异常(产生异常则不能访问,没有异常则正常访问)
            int i = list.length;
            flag = true;
        } catch (Exception e) {
            flag = false;
        }
        return flag;
    }
    
    //生成main方法调用
    public static void main(String[] args) {
        //指定要遍历的目录
        String filelocal = "G:/";
        String filename = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) //将时间格式化为纯数字格式
                            + ".txt";
        test = new File(filename);
        FileNameToFile fn = new FileNameToFile();//实例化
        fn.putfilename(filelocal, -1);//调用本类方法
        try {
            //打开已经生成的文件
            Runtime.getRuntime().exec("notepad " + filename);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值