2
查看File类的API文档,使用该类实现一个类FileList,它提供两个静态方法:1)printContentsInOneDirectory:能够将输入参数path所指定的本地磁盘路径下的所有目录和文件的名称(指明是目录还是文件,格式见下图)打印出来;2)readFileAndDirectory:能够将输入参数path所指定的本地磁盘路径下的所有目录(包含子目录)和文件的名称(指明是目录还是文件,格式见下图)以层次化结构打印出来。例如,某个目录下面有子目录a和文件Teacher.class,目录a下面有子目录b(下面有文件Teacher.java)和c(下面有文件Test.java和Test.class)以及文件1.txt,将该目录对应的路径作为输入参数调用该方法,程序的输出如下
答案:
import java.io.*;
public class FileList {
public static void printContentsInOneDirectory(File path)
{
if(!path.exists())
{
System.out.println("路径"+path.getPath()+"不存在");
return;
}
else
{
File[] filelist = path.listFiles();//获取File对象的所有子文件和路径
for(int i = 0;i < filelist.length;i++)
{
if(filelist[i].isFile())//如果是文件,不是目录
{
System.out.println("[文件]"+filelist[i].getName());;
}
else
{
System.out.println("[目录]"+filelist[i].getName());
}
}
}
}
public static void readFileAndDirectory(File path,int levels)
{
if(!path.exists())
{
System.out.println("路径"+path.getPath()+"不存在");
return;
}
else
{
File[] filelist = path.listFiles();
for(int i = 0;i < filelist.length;i++)
{
for(int j = 0;j < levels;j++)
{
System.out.print("-");//格式控制
}
if(filelist[i].isFile()) {
System.out.println("[文件] "+filelist[i].getName());
}
else {
System.out.println("[目录] "+filelist[i].getName());
readFileAndDirectory(filelist[i],levels+2);
}
}
}
}
}
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int levels = 0;
String s = sc.nextLine();
File f = new File(s);
FileList.printContentsInOneDirectory(f);
System.out.println("-----------------");
FileList.readFileAndDirectory(f, levels);
sc.close();
}
}