java-遍历jar包同级所有文件并输出打印到同级目录

这段代码是一个Java程序,它主要用于遍历jar包所在目录的父级路径下的所有文件和子目录,统计文件数量,并将结果写入指定的txt文件。程序首先获取jar路径,然后递归遍历文件夹,根据文件数量在不同的范围内添加前导零,最后将信息覆盖写入到folder_index.txt中。
摘要由CSDN通过智能技术生成

 该方法能实现在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();
    }
}

 效果图如下;228dacbdcfee78e18f989e7548d71f17.png

//输出效果图

148818a3672410dcd3c48f1a5f94f70e.png 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值