转跳到内容

Java生成文件目录(未打包exe)


推荐贴

前些天在其他地方看见一个帖子说仓鼠党老是把资源下重复的问题,正好lz也是仓鼠党硬盘较多,开学后不可能全带去学校,一些资源(特别是没推过的生肉和特典之类的)丢硬盘里就给忘了,导致再次看到资源想不起来下没下载就又下载一遍浪费硬盘空间,所以深受这个问题困扰大概

 

看到那个帖子下面有人说建个索引就行了,然后lz就恍然大悟,当仓鼠党这么多年了竟然从来没想过建索引:YangTuo_21:建个索引复制到常用盘就解决的事我竟然从来没想过,真是个失败的仓鼠:b7:

一开始比较懒直接百度看看有没有办法直接弄个索引出来,就百度到Excel很方便可以直接弄,但是lz没有买正版Excel也懒得删了重新下一遍盗版Excel,就想着用java弄一个索引但是嫌麻烦,反正只是用来确认下有没有这个文件,txt里面直接Ctrl+F搜一下就行了,所以就没弄索引单纯弄了个文件目录出来i_f25.png?t=20140803

 

开始之前先让lz叠个甲:566819171_SSB(5):由于lz是电子专业的 爱好编程,学校教的java教的很浅,也没有学过软件开发,加上高考选的日语英语小学生水平,所以下面的代码可能会出现且不仅限于:

1.奇怪的变量命名

2.不规范的程序书写

3.奇怪的注释方法

等等等等:a2:

版本是jdk-21,把第13行的路径替换成自己所需的路径,程序执行后会在该的路径下生成一个“索引.txt”文件,里面包含该路径下所有的文件(包括扩展名)以及文件夹的名称 当然也包括“索引.txt”这个文件自己 另外如果在某个地方也看见过一篇差不多的帖子的话 没错那也是我i_f25.png?t=20140803

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 拿了个比较乱的文件夹来当预览 估计是账号等级太低只能传这一张图i_f25.png?t=20140803

 

 

 

31_137565_c34526c682ab6816239e9d93647a49ca.webp

注释
青山狐仙 青山狐仙 80.00节操 好分享
月晓 月晓 50.00节操 这个是真好用
链接到点评
12 小时前,恐龙恐龙君说道:

如果你只是想生成一个文件夹树的话实际上不需要这么麻烦,写个bat脚本就行

tree ./ /f > tree.txt

或者打开cmd直接输进去就可以

还真是可以 大佬牛逼 我基本上没了解过win自带的这些指令:wn027: 

,由bot0721修改
链接到点评
×
×
  • 新建...

重要消息

为使您更好地使用该站点,请仔细阅读以下内容: 使用条款