题目要求是这样的,
6,从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印, 例如:
路径
文件夹A
文件夹B
文件夹C
文件D
文件C
文件B1
文件B2
文件A1
文件A2
我的代码如下:
package cn.itcast.test;
import java.io.File;
import java.util.Scanner;
/*
* 6,从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印, 例如:
*/
public class PrintFilesName {
public static void main(String[] args) {
File file = checkPath();
printName(file);
}
@SuppressWarnings("resource")
public static File checkPath() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要打印的路径");
while (true) {
String str = sc.nextLine();
File file = new File(str);
if (!file.exists()) {
System.out.println("您输入的路径不存在,请重新输入文件夹路径:");
} else if (file.isFile()) {
System.out.println("您输入的是文件路径,请重新输入文件夹路径:");
} else {
System.out.println(file.getName());
return file;
}
}
}
/*
* 定义个计数器count,方便循环打印"\t"制表符,如果file2为文件夹,则count++
*/
public static int count = 1;
public static void printName(File file) {
File[] files = file.listFiles();
for (File file2 : files) {
if (file2.isDirectory() && file2.listFiles().length != 0) {
for (int j = 0; j < count; j++) {
System.out.print("\t");
}
count++;
System.out.println(file2.getName());
printName(file2);
} else if (file2.isFile()) {
for (int j = 0; j < count; j++) {
System.out.print("\t");
}
count--;
System.out.println(file2.getName());
}
}
}
}
为何实现不了需求呢?望指点.
|