java获取同级文件夹下的文件夹和文件,并显示文件夹文件数

 代码段如下,直接打jar包运行就行,

↓ ↓ ↓

import java.io.*;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;

public class Main {
    static String t="";//输出内容,自动获取
    static String o="";//输出地址,不需要填,自动获取

    public static void main(String[] args) throws IOException {

        o= getFilePath().getParent();//获取当前jar路径的父级路径
        //System.out.println(o.toString());//输出上面路径

        getAllFile(o);//获取文件夹下所有文件
        //System.out.println(t);//输出文件夹下所有文件

        for(int i=0;i<=5;i++){
            write_over(t,o+"\\folder_index.txt");//输出内容到文件
        }
    }



    public static File getFilePath() {
        定位主类,获取位置
        String path = Main.class.getProtectionDomain().getCodeSource()
                .getLocation().getFile();

        try{
            path = java.net.URLDecoder.decode(path, "UTF-8");
        }catch (java.io.UnsupportedEncodingException e){
            return null;
        }
        return new File(path);
    }

    //该方法用于获取全部列表
    public static  List<File> getAllFile(String path){
        List<File> files=new ArrayList<>();
        findFolder(new File(path),files);
        return files;
    }
    private static void findFolder(File file, List<File> fileList){
        if(file.isDirectory()){

            //懒狗强行对齐
            if(getFile_num(file.toPath())<=10){
                t=t+"\n"+ +getFile_num(file.toPath())+"       "+file.getName();
            } else if (getFile_num(file.toPath())<=100) {
                t=t+"\n"+ +getFile_num(file.toPath())+"      "+file.getName();
            }else if (getFile_num(file.toPath())<=1000) {
                t=t+"\n"+ +getFile_num(file.toPath())+"     "+file.getName();
            }else{
                t=t+"\n"+ +getFile_num(file.toPath())+"    "+file.getName();
            }

            File[] files= file.listFiles();
            for(File f:files){
                findFolder(f,fileList);
            }
            t=t+"\n";//每刷完一个目录后换行
        }else{
            t=t+"\n"+"-       "+ file.getName();
        }
    }

    //返回某文件夹文件个数
    public static int getFile_num(Path path){
        int fileCount = 0;
        int folderCount = 0;
        File d = new File(String.valueOf(path));
        File list[] = d.listFiles();
        for(int i = 0; i < list.length; i++){
            if(list[i].isFile()){
                fileCount++;
            }else{
                folderCount++;
            }
        }
        //System.out.println("文件个数:"+fileCount);
        //System.out.println("文件夹数:"+folderCount);
        return fileCount;
    }

    //覆盖读写
    public static void write_over(String str,String path) throws IOException
    {
        //File file = new File(String.valueOf(path));
        File file = new File(path);
        if(!file.exists() && file.createNewFile()) {
            throw new IOException();
        }
        BufferedWriter out = new BufferedWriter(new FileWriter(file));
        out.flush();
        String text = str;
        out.write(text);
        out.flush();
        out.close();
    }
}

 效果图如下;d31c170497514a0989ad50d7756b8533.jpeg

//输出效果图

b018d9f103c141b6a3264d9dbc4c949a.jpeg 

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值