Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
搜索父文件的所有文件(以及父文件中的所有其他文件)JAVA_Java_File - Fatal编程技术网

搜索父文件的所有文件(以及父文件中的所有其他文件)JAVA

搜索父文件的所有文件(以及父文件中的所有其他文件)JAVA,java,file,Java,File,我正在尝试获取我的jar的父文件夹,并一直搜索它。原因是我正在修改构建路径上jar下面的所有.class文件(下面有一堆jar) 我目前在searchForClasses方法的dir.listFiles()上得到一个NPE,原因是当我创建一个新的文件实例时,它不是正确的路径。(我相信) 我目前有: public void searchForClasses(File dir) { for (File f : dir.listFiles()) { if (f.getN

我正在尝试获取我的jar的父文件夹,并一直搜索它。原因是我正在修改构建路径上jar下面的所有.class文件(下面有一堆jar)

我目前在searchForClasses方法的dir.listFiles()上得到一个NPE,原因是当我创建一个新的文件实例时,它不是正确的路径。(我相信)

我目前有:

    public void searchForClasses(File dir) {
    for (File f : dir.listFiles()) {
        if (f.getName().endsWith(".class")) {
            for (byte[] bytes : NMSversions)
                fix(f.getAbsolutePath(), bytes, NMS);
            for (byte[] bytes : OBCversions)
                fix(f.getAbsolutePath(), bytes, OBC);
            System.out.println("fixing");
        } else {
            searchForClasses(f);
        }
    }
}
这就是我用来尝试获取父文件的方法:

        File directory = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().getPath());
    main.searchForClasses(directory);

有人知道我可以切换什么吗?

File.listFiles()可以返回null。请参阅Javadoc。您没有检查它。

请发布完整的stacktrace。是否从磁盘上的“jar文件”加载Main.class?请注意,您的解决方案在某些情况下会失败:标题不清楚。你是说“父目录中的文件”吗?“of”和“in”之间有什么区别?@Jayan Main.class就是持有这种方法的类。和EJP,父目录下的文件。“内部”和“内部”没有区别。那你为什么要两者兼而有之呢?你的标题中括号内的部分是什么意思?你是什么意思?我尝试查找父文件中的每个文件,然后查找这些文件中的文件,依此类推。我试图访问类文件,但我只有一个装满JAR的文件。我想运行所有这些类文件。是的,但我认为只有当它不是目录时才返回null。。。父文件夹将始终是一个目录。不允许我编辑上一篇文章。。。不管怎样,我添加了一个空检查,它仍然抛出一个npe,我猜目录是空的?@JNorr44你在哪里添加了空检查?怎么做?在你的代码中,哪里可以保证你只在一个目录上调用listFiles()?问题是我想获取类文件,而不仅仅是目录中的文件。我在dir上的for循环之前添加了一个nullcheck。@JNorr44我将再说一遍。listFiles()的结果可以为null,在您输入代码检查该结果之前,您将继续获得这些NPE。我看不出类文件与这个问题有什么关系。