Java实验5 IO流 2 查看File类的API文档,使用该类实现一个类FileList,它提供两个静态方法:1)printContentsInOneDirectory:能够将输入参数path所指定

2

查看File类的API文档,使用该类实现一个类FileList,它提供两个静态方法:1)printContentsInOneDirectory:能够将输入参数path所指定的本地磁盘路径下的所有目录和文件的名称(指明是目录还是文件,格式见下图)打印出来;2)readFileAndDirectory:能够将输入参数path所指定的本地磁盘路径下的所有目录(包含子目录)和文件的名称(指明是目录还是文件,格式见下图)以层次化结构打印出来。例如,某个目录下面有子目录a和文件Teacher.class,目录a下面有子目录b(下面有文件Teacher.java)和c(下面有文件Test.java和Test.class)以及文件1.txt,将该目录对应的路径作为输入参数调用该方法,程序的输出如下

Java实验5 IO流 2 查看File类的API文档,使用该类实现一个类FileList,它提供两个静态方法:1)printContentsInOneDirectory:能够将输入参数path所指定

答案:

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();
	}

}