package com.ali.exercises01_03;
import java.io.File;
import java.util.Scanner;
public class Ex1_3_43 {
/**
* @param args
*
*/
public static void main(String[] args) {
//C:\Users\85190\Desktop\java\my_day01
File dir = getDir();
//printFile(dir);
showFile(dir, 0);
}
public static void showFile(File file, int leave) {
File[] subFiles = file.listFiles();
for (int i = 0; i < leave; i++) {
System.out.print(" ");
}
for (File subFile : subFiles) {
if(subFile.isFile()) {
System.out.println(subFile);
}
else if(file.isDirectory()) {
System.out.println(subFile);
showFile(subFile, ++leave);
}
}
}
/*
* 打印该文件夹下所有的.java文件名
* */
public static void printFile(File dir) {
File[] subFiles = dir.listFiles();
//int spaceNum = 0;
for (File file : subFiles) {
if(file.isFile()) {
System.out.println(" " + file);
}
else if(file.isDirectory()) {
System.out.println(file);
printFile(file);
}
}
}
/*
*
* 返回为File
* */
public static File getDir() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个文件夹路径:");
while(true) {
String line = sc.nextLine();
File dir = new File(line);
if(!dir.exists()) {
System.out.println("文件夹路径不存在,请重新录入");
} else if(dir.isFile()) {
System.out.println("请录入一个文件夹路径");
} else {
return dir;
}
}
}
}
下面这个就是queue的,但是在q.enqueue()还是用到了数组,所以,直接用数组求可能是更好的选择
public static void showQueueFile(File file, int leave) {
Queue<File> q = new Queue<>();
File[] subFiles = file.listFiles();
for (int i = 0; i < subFiles.length; i++) {
q.enqueue(subFiles[i]);
}
for (int i = 0; i < leave; i++) {
System.out.print(" ");
}
for (File file2 : q) {
if(file2.isFile())
System.out.println(file2);
else if(file2.isDirectory()) {
System.out.println(file2);
showFile(file2, ++leave);
}
}
}