同样的代码别人运行就没问题,我运行就出错是怎么回事?


 package com.itheima.d2_recusion;

    import java.io.File;

    /*
           非规律化递归
           案例:去D盘搜索一个叫eclipse.exe文件
     */
    public class RecusionDemo4 {
        public static void main(String[] args) {
            // 2、调用方法:传入目录,文件名
            searchFile(new File("D:\\"), "eclipse.exe");
        }

        /**
         * 1、搜索某个目录下的全部文件,找到我们想要的文件
         * @param dir      被搜索的源目录
         * @param fileName 被搜索的文件名
         */
        public static void searchFile(File dir, String fileName) {
            // 3、判断dir是否是目录
            if (dir != null && dir.isDirectory()) {
                // 可以找了
                // 4、提取当前目录下的一级对象
                File[] files = dir.listFiles();
                // 5、判断是否存在一级文件对象,存在才可以遍历
                if (files != null && files.length > 0){
                    for (File file : files) {
                        // 6、判断当前遍历的一级文件对象是文件还是文件夹
                        if (file.isFile()){
                        // 7、是不是要找的,是就输出其路径
                            if (file.getName().contains(fileName)){
                                System.out.println("找到了:" + file.getAbsolutePath());
                            }
                        }
                        else{
                            // 8、说明是文件夹,需要继续递归寻找
                            searchFile(file, fileName);
                        }
                    }
                }
            }else{
                System.out.println("您当前搜索得位置不是文件夹");
            }
        }
    }

img

img

别人查到就输出路径查不到输出 System.out.println("您当前搜索得位置不是文件夹");
而我的确实查到了两个都输出,查不到了值输出 System.out.println("您当前搜索得位置不是文件夹");
咋回事啊?有人说是2头进了,我表示不理解。为啥同样的代码到别人那都没问题,到我这就成2头进了

是不是你目录下还有其他文件,按照你这个逻辑,如果你这个目录或子目录中存在其他文件,是会这样的

你把你代码和运行的输出 放一起 截图发出来看看
目前就你这段代码,不可能有两个不同的输出的

代码没看出什么问题,检查你的目录是否存在,是否有图片,是否有访问的权限。