黑马程序员技术交流社区

标题: 从键盘接收一个文件夹路径,把文件夹中的所有文件以及文... [打印本页]

作者: qetu001212    时间: 2016-8-11 00:02
标题: 从键盘接收一个文件夹路径,把文件夹中的所有文件以及文...
从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印, 例如:
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



作者: wangsir666    时间: 2016-8-11 21:43
Scanner里边有方法,你可以试试,我只试过扫描文件并输出
作者: 水月灬清影    时间: 2016-8-12 14:25
你是说这样么?
[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.getName());
                        if (files.isDirectory()) {
                                ergodic(files, level + 1);
                        }
                }
        }

}

作者: 水月灬清影    时间: 2016-8-12 14:27
本帖最后由 水月灬清影 于 2016-8-12 14:30 编辑



作者: 爱学习爱java..    时间: 2016-8-12 15:16
学习了,虽然有的地方没看懂
作者: 愿望变美    时间: 2016-8-13 10:57
[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("请输入正确的文件夹名称");
                        }
                }
        }
       
}

作者: 请叫我院长    时间: 2016-9-9 23:14
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());
                        }
                        }
                }
        }

作者: 芳燚乐乐    时间: 2016-9-10 00:23
有些地方还是不太理解
作者: lipeng518    时间: 2016-9-10 00:40
看评论学到了,技术大牛带带我
作者: battlexing    时间: 2017-8-21 01:25
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;
        }
}


作者: battlexing    时间: 2017-8-21 01:28
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);
                                        }
                               
                        }
                               
                        }
}



作者: Oliverwqcwrw    时间: 2017-8-21 11:29
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:42
本帖最后由 枫林醉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());
                }
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2