A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印, 例如:
aaa是文件夹,里面有bbb.txt,ccc.txt,ddd.txt这些文件,有eee这样的文件夹,eee中有fff.txt和ggg.txt,打印出层级来
aaa
        bbb.txt
        ccc.txt
        ddd.txt

        eee
                fff.txt
                ggg.txt


13 个回复

倒序浏览
Scanner里边有方法,你可以试试,我只试过扫描文件并输出

点评

重点是分层级的打出来。。。其他都简单。。。  发表于 2016-8-12 01:16
回复 使用道具 举报
你是说这样么?
[Java] 纯文本查看 复制代码
import java.io.File;
import java.util.Scanner;

public class DirectoryDemo {
	public static void main(String[] args) {
		System.out.println("请输入路径");
		Scanner sc = new Scanner(System.in);
		String path=sc.nextLine();
		File dir=new File(path);
		System.out.println(dir.getName());
		ergodic(dir, 0);
	}

	private static void ergodic(File dir, int level) {

		String prePAUSE = "   ";
		for (int i = 0; i < level; i++) {
			prePAUSE += "   ";
		}

		File[] files = dir.listFiles();
		for (int i = 0; i < files.length; i++) {
			System.out.println(prePAUSE + files[i].getName());
			if (files[i].isDirectory()) {
				ergodic(files[i], level + 1);
			}
		}
	}

}

评分

参与人数 1黑马币 +1 收起 理由
qetu001212 + 1 淡定

查看全部评分

回复 使用道具 举报
本帖最后由 水月灬清影 于 2016-8-12 14:30 编辑


回复 使用道具 举报
学习了,虽然有的地方没看懂
回复 使用道具 举报
[Java] 纯文本查看 复制代码
import java.io.File;
import java.util.Scanner;

public class Test {
	
	public static void main(String[] args) {
		File dir = getFile();
		print(dir,"");
	}
	
	private static void print(File dir ,String s) {
		System.out.println(s + dir.getName());
		File[] subFile = dir.listFiles();
		s = s + "   ";
		for (File file : subFile) {
			if(file.isFile()){
				System.out.println(s + file.getName());
			}else if(file.isDirectory()){
				print(file,s);
			}
		}
	}

	private static File getFile() {
		System.out.println("请输入文件夹名");
		Scanner sc = new Scanner(System.in);
		while(true){
			String s = sc.nextLine();
			File dir = new File(s);
			if(dir.isDirectory()){
				return dir;
			}else{
				System.out.println("请输入正确的文件夹名称");
			}
		}
	}
	
}

评分

参与人数 1黑马币 +1 收起 理由
qetu001212 + 1 淡定

查看全部评分

回复 使用道具 举报
package practice.demo05;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class Demo {
        public static void main(String[] args) throws IOException {
                System.out.println("请输入一个文件夹的 路径:");
                String str = new Scanner(System.in).next();
                File file = new File(str);
                String tab="\t";
                function(file,tab);
        }
        public static void function(File file,String tab01) throws IOException {
                File[] fileArr = file.listFiles();
                        tab01+="\t";
                for(File f: fileArr){
                        if(f.isDirectory()){
                                System.out.println(tab01+f.getName());
                                function(f,tab01);
                        }else{
                                System.out.println(tab01+f.getName());
                        }
                        }
                }
        }
回复 使用道具 举报
有些地方还是不太理解
回复 使用道具 举报
看评论学到了,技术大牛带带我
回复 使用道具 举报
public class Test02_06 {

        public static void main(String[] args) {
                // 创建键盘输入对象
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个文件夹路径:");
                // 接收用户输入的路径
                String filePath = sc.nextLine();
                // 根据路径字符串创建文件对象
                File dir = new File(filePath);
                // 调用calculate方法获得文件大小
                long length = calculate(dir);
                System.out.println("文件夹总大小:" + length);
        }

        /*
         * 获得文件夹的大小
         */
        public static long calculate(File dir){
                long length = 0;
                // 获得文件数组
                File files[] = dir.listFiles();
                // 遍历数组
                for (File file : files) {
                        // 判断是否是文件
                        if(file.isFile()) {
                                length += calculate(file);
                        } else {
                                length += file.length();
                        }
}
                return length;
        }
}

回复 使用道具 举报
package cn.itcastG2;

import java.io.File;

///递归遍历将指定文件夹的所有文件(包括所有子文件夹的文件)的全路径输出在控制台。
public class Test03 {
                        public static void main(String[] args) {
                                File file =  new File("d:\\work\\abc");
                                prinftallfiles(file);
                               
                                }
                        private static void prinftallfiles(File file) {
                               
                                 File[] lf = file.listFiles();
                                 for (File files : lf) {
                                        if(!files.isDirectory()){
                                                System.out.println(files.getAbsolutePath());
                                        }else{
                                                prinftallfiles(files);
                                        }
                               
                        }
                               
                        }
}


回复 使用道具 举报
public class Test03_04 {

        public static void main(String[] args) {
                // 创建键盘输入对象
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个文件夹路径:");
                // 接收用户输入的路径
                String filePath = sc.nextLine();
                // 根据路径字符串创建文件对象
                File dir = new File(filePath);
                // 打印目录结构
                printDir(dir,0);
        }

        /*
         * 打印目录结构
         * level:表示目录的层次
         */
        public static void printDir(File f,int level){
                for (int i = 0; i < level; i++) {
                        System.out.print("\t");
                }
                System.out.println(f.getName());
                if(f.isDirectory()) {
                        File[] files = f.listFiles();
                        for (File file : files) {
                                printDir(file,level + 1);
                        }
                }
        }
}
回复 使用道具 举报
本帖最后由 枫林醉wisdom 于 2017-10-2 22:43 编辑

[AppleScript] 纯文本查看 复制代码
package cn.itcast.IOtesthomewo;

import java.io.File;
import java.io.FileFilter;
import java.util.Scanner;
import java.util.Set;
/*从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印
例如:
aaa是文件夹,里面有bbb.txt,ccc.txt,ddd.txt这些文件,有eee这样的文件夹,eee中有fff.txt和ggg.txt,打印出层级来
        aaa
                bbb.txt
                ccc.txt
                ddd.txt        
                eee
                        fff.txt
                        ggg.txt
*/

public class HomeWork10 {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入文件夹路径");
                String s = sc.nextLine();
                File file = new File(s);
                count(file, 0);
        }

        public static void count(File file, int num) {
                for (int i = 0; i < num; i++) {
                        System.out.print("\t");
                }
                if(file.isDirectory()) {
                        System.out.println(file.getName());
                        File[] files = file.listFiles();
                        for (File file2 : files) {
                                if(file2.isDirectory()) {
                                        count(file2, num + 1);
                                } else {
                                        for (int i = 0; i < num + 1; i++) {
                                                System.out.print("\t");
                                        }
                                        System.out.println(file2.getName());
                                }
                        }
                } else {
                        System.out.println(file.getName());
                }
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马