怎么获取最终的子目录?

忠向 2016-01-04 08:31:22
目录结构是这样的:

E:\KJK\BH04
E:\KJK\BH04\toRST
E:\KJK\BH04\toRST\RST03
E:\KJK\BH04\toRST\RST03\01
E:\KJK\BH04\toRST\RST03\02
E:\KJK\BH04\toRST\RST03\03
E:\KJK\BH04\toRST\RST03\04
E:\KJK\BH04\toRST\RST03\06
E:\KJK\BH04\toRST\RST03\07


想得到这样的:
E:\KJK\BH04\toRST\RST03\01
E:\KJK\BH04\toRST\RST03\02
E:\KJK\BH04\toRST\RST03\03
E:\KJK\BH04\toRST\RST03\04
E:\KJK\BH04\toRST\RST03\06
E:\KJK\BH04\toRST\RST03\07

不知道有无好法子?谢谢
...全文
128 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
忠向 2016-01-05
  • 打赏
  • 举报
回复
非常感谢,这段代码我拿了直接用了,只是不能评分了
引用 4 楼 qingyuan18 的回复:

public static void main(String[] args){
		ArrayList lsFinaDirs = new ArrayList();
		getFinalDirs("G:\\workshop\\IDM",lsFinaDirs);
		for(Object dirs:lsFinaDirs){
			System.out.println("最终子目录:"+dirs.toString());
		}
	}


	public static void getFinalDirs(String rootPath,ArrayList lsDirs){
		File curDir = new File(rootPath);
		boolean isFinalFlag = false;
		if(curDir.isFile()){
			return;
		}
		if(!curDir.isFile()){
			isFinalFlag = true;
			String[] subDir = curDir.list();
			if(subDir.length>=1){
				for(String subDirPath:subDir){
					File subDirFile = new File(rootPath+File.separator+subDirPath);
					//有子目录,则当前目录不是最终目录,递归处理
					if(!subDirFile.isFile()){
						isFinalFlag= false;
						getFinalDirs(rootPath+File.separator+subDirPath,lsDirs);
					}
				}

			}	
		}			
		//如果是最终目录,加入结果列表
		if(isFinalFlag){
			lsDirs.add(rootPath);
		}
	}
qingyuan18 2016-01-04
  • 打赏
  • 举报
回复

public static void main(String[] args){
		ArrayList lsFinaDirs = new ArrayList();
		getFinalDirs("G:\\workshop\\IDM",lsFinaDirs);
		for(Object dirs:lsFinaDirs){
			System.out.println("最终子目录:"+dirs.toString());
		}
	}


	public static void getFinalDirs(String rootPath,ArrayList lsDirs){
		File curDir = new File(rootPath);
		boolean isFinalFlag = false;
		if(curDir.isFile()){
			return;
		}
		if(!curDir.isFile()){
			isFinalFlag = true;
			String[] subDir = curDir.list();
			if(subDir.length>=1){
				for(String subDirPath:subDir){
					File subDirFile = new File(rootPath+File.separator+subDirPath);
					//有子目录,则当前目录不是最终目录,递归处理
					if(!subDirFile.isFile()){
						isFinalFlag= false;
						getFinalDirs(rootPath+File.separator+subDirPath,lsDirs);
					}
				}

			}	
		}			
		//如果是最终目录,加入结果列表
		if(isFinalFlag){
			lsDirs.add(rootPath);
		}
	}
rickylin86 2016-01-04
  • 打赏
  • 举报
回复

import java.util.Arrays;
import java.util.ArrayList;

public class Test{
	public static void main(String[] args){
		String[] uris = {
			"E:\\KJK\\BH04\\toRST",
			"E:\\KJK\\BH04\\toRST\\RST03",
			"E:\\KJK\\BH04\\toRST\\RST03\\01",
			"E:\\KJK\\BH04\\toRST\\RST03\\02",
			"E:\\KJK\\BH04\\toRST\\RST03\\03",
			"E:\\KJK\\BH04\\toRST\\RST03\\04",
			"E:\\KJK\\BH04\\toRST\\RST03\\06",
			"E:\\KJK\\BH04\\toRST\\RST03\\07",
			"E:\\KJK\\BH04"
		};

		Arrays.sort(uris);
		
		ArrayList<String> list = new ArrayList<>();
		
		for(int i = 0,j = 0 ; i < uris.length - 1 ; i ++){
			j = i + 1;
			if(uris[j].startsWith(uris[i])){
				continue;
			}
			list.add(uris[i]);
		}

		for(String uri : list){
			System.out.println(uri);
		}

	}
}
忠向 2016-01-04
  • 打赏
  • 举报
回复
引用 1 楼 ITjavaman 的回复:
没看懂需求。。。。。。。。。。。。
就是最终的目录
ITjavaman 2016-01-04
  • 打赏
  • 举报
回复
没看懂需求。。。。。。。。。。。。

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧