使用递归操作文件的两个例子

1.使用递归删除某一目录下的全部文件

package com.lfl.file;

import java.io.File;

public class DeleteAllFileTest {
	
	public static void deleteAll(File file) {
		if (file.isFile() || file.list().length == 0) {
			file.delete();
		} else {
			File[] files = file.listFiles();
			for (File f : files) {
				deleteAll(f);
				f.delete();
			}
			file.delete();
		}
	}
	
	

	public static void main(String[] args) {
		File file = new File("G:\\myfirstsite222");
		deleteAll(file);
	}

}

 

 

2.使用递归遍历某一目录下的所有文件,并以树形结构显示

package com.lfl.file;

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

public class ListAllFileTest {
	
	private static int level;
	
	public static void deepList(File file) {
		if (file.isFile() || file.list().length == 0) {
			return;
		} else {
			File[] files = file.listFiles();
			files = sort(files);
			for (File f : files) {
				StringBuilder output = new StringBuilder();
				if (f.isFile()) {
					output.append(getLevel(level));
					output.append(f.getName());
				} else {
					output.append(getLevel(level));
					output.append(f.getName());
					output.append("\\");
				}
				System.out.println(output.toString());
				
				if (f.isDirectory()) {
					level ++;
					deepList(f);
					level --;
				}
			}
			
		}
	}
	
	
	public static File[] sort(File[] files) {
		List<File> list = new ArrayList<File>();
		List<File> fileList = new ArrayList<File>();
		for (File f : files) {
			if (f.isDirectory()) 
				list.add(f);
			else 
				fileList.add(f);
		}
		list.addAll(fileList);
		return list.toArray(new File[files.length]);
	}
	
	public static String getLevel(int level) {
		StringBuilder sb = new StringBuilder();
		for (int i=0; i < level; i++) {
			sb.append("\t");
		}
		return sb.toString();
	}
	
	
	

	public static void main(String[] args) {
		File file = new File("G:/222");
		deepList(file);
	}

}

 

 

你可能感兴趣的:(java,递归,文件操作)