该方法能实现在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();
}
}
效果图如下;
//输出效果图