bot0721 发布于周二 16:12 分享 发布于周二 16:12 前些天在其他地方看见一个帖子说仓鼠党老是把资源下重复的问题,正好lz也是仓鼠党硬盘较多,开学后不可能全带去学校,一些资源(特别是没推过的生肉和特典之类的)丢硬盘里就给忘了,导致再次看到资源想不起来下没下载就又下载一遍浪费硬盘空间,所以深受这个问题困扰大概。 看到那个帖子下面有人说建个索引就行了,然后lz就恍然大悟,当仓鼠党这么多年了竟然从来没想过建索引建个索引复制到常用盘就解决的事我竟然从来没想过,真是个失败的仓鼠 一开始比较懒直接百度看看有没有办法直接弄个索引出来,就百度到Excel很方便可以直接弄,但是lz没有买正版Excel也懒得删了重新下一遍盗版Excel,就想着用java弄一个索引但是嫌麻烦,反正只是用来确认下有没有这个文件,txt里面直接Ctrl+F搜一下就行了,所以就没弄索引单纯弄了个文件目录出来 开始之前先让lz叠个甲由于lz是电子专业的 爱好编程,学校教的java教的很浅,也没有学过软件开发,加上高考选的日语英语小学生水平,所以下面的代码可能会出现且不仅限于: 1.奇怪的变量命名 2.不规范的程序书写 3.奇怪的注释方法 等等等等 版本是jdk-21,把第13行的路径替换成自己所需的路径,程序执行后会在该的路径下生成一个“索引.txt”文件,里面包含该路径下所有的文件(包括扩展名)以及文件夹的名称 当然也包括“索引.txt”这个文件自己 另外如果在某个地方也看见过一篇差不多的帖子的话 没错那也是我 package index; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class Dome { public static void main(String[] args) { String path = "B:\\tool\\单片机"; //这里是第13行 获取该路径下所有文件的文件目录 File txt = new File(path, "索引.txt"); FileOutputStream txtOut = null; try { txtOut = new FileOutputStream(txt, false); // false=覆盖原文件 true=不覆盖原文件 Generate g = new Generate(); txtOut.write("--------------------------------------\n".getBytes()); txtOut.write(path.getBytes());//输出路径 txtOut.write("\n--------------------------------------\n".getBytes()); g.indexGenerate(path, 0, txtOut); //生成文件目录 } catch (FileNotFoundException e) { System.out.println("文件没找到"); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally //关闭输出流 { if (txtOut != null) { try { txtOut.close(); } catch (IOException e) { e.printStackTrace(); } } } System.out.println("return 0"); //无意义,单纯表示程序结束 } } class Generate //生成 { void indexGenerate(String path, int deep, FileOutputStream txt) { File file = new File(path); File[] arr = file.listFiles();//获取file文件夹下所有文件 for(int i = 0; i < arr.length; i++) { if(arr[i].isFile()) //如果是文件 { for(int j = 0; j < deep; j++) //缩进 { try { txt.write(" ".getBytes()); } catch (IOException e) { e.printStackTrace(); } } try //输出文件名,包括后缀 { txt.write(arr[i].getName().getBytes()); txt.write("\n".getBytes()); } catch (IOException e) { e.printStackTrace(); } } else if(arr[i].isDirectory())//如果是文件夹 { for(int j = 0; j < deep; j++) //缩进 { try { txt.write(" ".getBytes()); } catch (IOException e) { e.printStackTrace(); } } try //输出文件夹名 { txt.write(arr[i].getName().getBytes()); txt.write("\n".getBytes()); } catch (IOException e) { e.printStackTrace(); } indexGenerate(arr[i].getPath(), deep + 4, txt); //递归访问文件夹 } } } } 程序结束后控制台输出return 0 拿了个比较乱的文件夹来当预览 估计是账号等级太低只能传这一张图 注释 青山狐仙 80.00节操 好分享 月晓 50.00节操 这个是真好用 2 链接到点评
bot0721 发布于周三 05:57 作者 分享 发布于周三 05:57 (已修改) 12 小时前,恐龙恐龙君说道: 如果你只是想生成一个文件夹树的话实际上不需要这么麻烦,写个bat脚本就行 tree ./ /f > tree.txt 或者打开cmd直接输进去就可以 还真是可以 大佬牛逼 我基本上没了解过win自带的这些指令 周三 06:00,由bot0721修改 链接到点评
推荐贴