搜索父文件的所有文件(以及父文件中的所有其他文件)JAVA
我正在尝试获取我的jar的父文件夹,并一直搜索它。原因是我正在修改构建路径上jar下面的所有.class文件(下面有一堆jar) 我目前在searchForClasses方法的dir.listFiles()上得到一个NPE,原因是当我创建一个新的文件实例时,它不是正确的路径。(我相信) 我目前有:搜索父文件的所有文件(以及父文件中的所有其他文件)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
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。我看不出类文件与这个问题有什么关系。