60

package com.haizhitao.io2;

import java.io.File;
import java.util.ArrayList;

public class ListAllTest
{
	//用于判断目录或文件所处的层次
	private static int time;
	
	//递归的方法
	public static void deepList(File file)
	{
		if(file.isFile() || file.listFiles().length == 0)
		{
			return;
		}
		else
		{
			File[] files = file.listFiles();
			
			files = sort(files);
			
			for(File f : files)
			{
				StringBuffer output = new StringBuffer();
				
				if(f.isFile())
				{
					output.append(getTabs(time));
					output.append(f.getName());
				}
				else
				{
					output.append(getTabs(time));
					output.append(f.getName());
					output.append("\\");
				}
				
				System.out.println(output);
				
				if(f.isDirectory())
				{
					time++;
					
					deepList(f);
					
					time--;
				}
			}
		}
	}
	
	//整理文件数组,使得目录排在文件之前
	private static File[] sort(File[] files)
	{
		ArrayList<File> sorted = new ArrayList<File>();
		
		//寻找所有的目录
		for(File f : files)
		{
			if(f.isDirectory())
				sorted.add(f);
		}
		
		//寻找所有的文件
		for(File f : files)
		{
			if(f.isFile())
				sorted.add(f);
		}
	
		return sorted.toArray(new File[files.length]);
	}
	

	//判断需要增加多少个tab的方法
	private static String getTabs(int time)
	{
		StringBuffer buffer = new StringBuffer();
		
		for(int i = 0; i < time; i++)
		{
			buffer.append("\t");
		}
		
		return buffer.toString();
	}
	
	public static void main(String[] args)
	{
		File file = new File("E:\\学习1\\海之涛.JAVA学习\\Java视频教程——张龙\\lesson14.code");
		
		deepList(file);
	}
}

//output:
//decorator\
//	Client.java
//	Component.java
//	ConcreteComponent.java
//	ConcreteDecorator1.java
//	ConcreteDecorator2.java
//	Decorator.java
//io\
//	Fab.java
//	FileTest1.java
//	FileTest2.java
//	FileTest3.java
//	FileTest4.java
//	FileTest5.java
//	FileTest6.java
//	FileTest7.java
//	FileTest8.java
//	FileTest9.java
//	Test1.java
//io2\
//	.ListAllTest.java.swp
//	BufferedOutputStreamTest1.java
//	ByteArrayInputStreamTest1.java
//	ByteArrayOutputStreamTest1.java
//	CharArrayReader1.java
//	CharSet.java
//	DataStream1.java
//	FileReader1.java
//	FileWriter1.java
//	InputStreamTest1.java
//	ListAllTest.java
//	ListAllTest.java~
//	MyOwnStream1.java
//	MyOwnStream2.java
//	OutputStreamTest1.java
//	RandomAccessFile1.java
//	StreamTest.java
//	StreamTest2.java
//Decorator.pdf
//IO_3.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值