Java程序:实现浏览目录下的所有内容

Java 文件流操作


版本

😃version 1.0.0

问题简介

😃浏览指定目录下所有的文件,并且以比较清晰的形式输出在控制台。

实现想法简介

😃递归实现

function1

😃只显示文件名及其扩展名

function2

😃显示完整的文件名及其路径

代码介绍

所使用的包

// 导包
import java.io.File;
import java.util.Scanner;

public static void main(String[] args)

public static void main(String[] args) {
        Scanner console = new Scanner(System.in);  // 创建输入流

        System.out.print("Please enter the directory you want to browse(Tips:'\\\\'):");  // 提示输入内容
        String s = console.nextLine();  // 路径

        File f = new File(s);  // 打开文件

        if (f.isDirectory()) {  // 输入符合
            System.out.println("Directory Browsing (" + f + "):");  // 提示
            function1(f, "");
//            function2(f, "");
        } else {  // 输入不符合
            System.out.println("ERROR!Please check the directory you entered!");
        }
}

public static void function1(File f, String id)

/*
不包含绝对路径以文件树的形式显示目录内所有内容
【FILE】:表示文件
【FOLDER】:表示文件夹
缩进以'\t'表示同目录文件
*/
public static void function1(File f, String id) {
        String[] list = f.list();

        id += "    ";  // id每次递归增加"    "

        for (String s : list) {  // 增强for循环
            File f1 = new File(f, "\\" + s);  // 转化成文件
            if (f1.isFile()) {  // 判断是否是文件 - 增加标识更加清晰
                System.out.println(id + "【FILE】" + s);  // 【FILE】是标识 - 文件
            } else {  // 如果不是文件,则递归实现显示目录内的内容
                System.out.println(id + "【FOLDER】" + s);  // 【FOLDER】是标识 - 文件夹
                function1(f1, id);  // 递归
            }
        }
}

public static void function2(File f, String id)

/*
包含绝对路径以文件树的形式显示目录内所有内容
【FILE】:表示文件
【FOLDER】:表示文件夹
缩进以'\t'表示同目录文件
*/
public static void function2(File f, String id) {
        File[] files = f.listFiles();

        id += "    ";  // id每次递归增加"    "

        for(File e : files) {  // 增强for循环
            if(e.isFile()) {  // 判断是否是文件 - 增加标识更加清晰
                System.out.println(id + "【FILE】" + e);  // 【FILE】是标识 - 文件
            } else {  // 如果不是文件,则递归实现显示目录内的内容
                System.out.println(id + "【FOLDER】" + e);  // 【FOLDER】是标识 - 文件夹
                function2(e, id);  // 递归
            }
        }
}

实现效果

测试目录内容浏览

路径:"C:\Users\Kind\Desktop\TestFile"
TestFile内容: Test01 | Test02 | demo01.txt | img.jpg | MarkDemo.md
Test01内容: demo.xlsl | test.docx | Test05
                                    Test05内容: demo05,txt
Test02内容: Test03 | demo02.txt           
            Test03内容: demo.bmp | demo03.txt | Test04     
                                                Test04内容: demo04.txt

代码实现效果(函数function1)

Please enter the directory you want to browse(Tips:'\\'):C:\\Users\\Kind\\Desktop\\TestFile
Directory Browsing (C:\Users\Kind\Desktop\TestFile):
    【FILE】demo01.txt
    【FILE】img.jpg
    【FILE】MarkDemo.md
    【FOLDER】Test01
        【FILE】demo.xlsx
        【FILE】test.docx
        【FOLDER】Test05
            【FILE】demo05.txt
    【FOLDER】Test02
        【FILE】demo02.txt
        【FOLDER】Test03
            【FILE】demo.bmp
            【FILE】demo03.txt
            【FOLDER】Test04
                【FILE】demo04.txt

代码实现效果(函数function2)

Please enter the directory you want to browse(Tips:'\\'):C:\\Users\\Kind\\Desktop\\TestFile
Directory Browsing (C:\Users\Kind\Desktop\TestFile):
    【FILE】C:\Users\Kind\Desktop\TestFile\demo01.txt
    【FILE】C:\Users\Kind\Desktop\TestFile\img.jpg
    【FILE】C:\Users\Kind\Desktop\TestFile\MarkDemo.md
    【FOLDER】C:\Users\Kind\Desktop\TestFile\Test01
        【FILE】C:\Users\Kind\Desktop\TestFile\Test01\demo.xlsx
        【FILE】C:\Users\Kind\Desktop\TestFile\Test01\test.docx
        【FOLDER】C:\Users\Kind\Desktop\TestFile\Test01\Test05
            【FILE】C:\Users\Kind\Desktop\TestFile\Test01\Test05\demo05.txt
    【FOLDER】C:\Users\Kind\Desktop\TestFile\Test02
        【FILE】C:\Users\Kind\Desktop\TestFile\Test02\demo02.txt
        【FOLDER】C:\Users\Kind\Desktop\TestFile\Test02\Test03
            【FILE】C:\Users\Kind\Desktop\TestFile\Test02\Test03\demo.bmp
            【FILE】C:\Users\Kind\Desktop\TestFile\Test02\Test03\demo03.txt
            【FOLDER】C:\Users\Kind\Desktop\TestFile\Test02\Test03\Test04
                【FILE】C:\Users\Kind\Desktop\TestFile\Test02\Test03\Test04\demo04.txt

编者留言

😃代码还存在一定的问题(还有一些问题未考虑,在未来的版本中会解决),本文章可以简单帮助读者对于文件流的学习

完整代码

import java.io.File;
import java.util.Scanner;

/**
 * @version 1.0.0
 * @title FileDemo01
 * @auther Einstein
 **/

public class FileDemo01 {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);  // 创建输入流
        System.out.print("Please enter the directory you want to browse(Tips:'\\\\'):");  // 提示输入内容
        String s = console.nextLine();  // 路径
        File f = new File(s);  // 打开文件
        if (f.isDirectory()) {  // 输入符合
            System.out.println("Directory Browsing (" + f + "):");  // 提示
            function1(f, "");
//            function2(f, "");
        } else {  // 输入不符合
            System.out.println("ERROR!Please check the directory you entered!");
        }
    }

    public static void function1(File f, String id) {
        String[] list = f.list();
        id += "    ";  // id每次递归增加\t
        for (String s : list) {  // 增强for循环
            File f1 = new File(f, "\\" + s);  // 转化成文件
            if (f1.isFile()) {  // 判断是否是文件 - 增加标识更加清晰
                System.out.println(id + "【FILE】" + s);  // 【FILE】是标识 - 文件
            } else {  // 如果不是文件,则递归实现显示目录内的内容
                System.out.println(id + "【FOLDER】" + s);  // 【FOLDER】是标识 - 文件夹
                function1(f1, id);  // 递归
            }
        }
    }

    public static void function2(File f, String id) {
        File[] files = f.listFiles();
        id += "    ";  // id每次递归增加"    "
        for(File e : files) {  // 增强for循环
            if(e.isFile()) {  // 判断是否是文件 - 增加标识更加清晰
                System.out.println(id + "【FILE】" + e);  // 【FILE】是标识 - 文件
            } else {  // 如果不是文件,则递归实现显示目录内的内容
                System.out.println(id + "【FOLDER】" + e);  // 【FOLDER】是标识 - 文件夹
                function2(e, id);  // 递归
            }
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值