Java中的listFiles()方法在.jar中不起作用

时间:2018-08-22 18:04:20

标签: java file jar io directory

我的项目中有一个“图片”文件夹,如下所示: link

我想找到其中一些文件夹中的文件数。

我正在使用: int length = new File("./Pictures/1").listFiles().length 当我运行IDE时,效果很好。但是,当我将项目转换为.jar文件时,我得到了NullPointerException.

3 个答案:

答案 0 :(得分:4)

jar文件基本上是zip文件。您的代码将在文件系统上而不是jar文件中寻找Pictures目录。要访问jar文件中的文件(也可以在jar之外工作,它从类路径搜索),可以使用Class.getResource()(和getResourceAsStream())。

但是我不确定是否可以根据需要将它们用于文件列表,它们主要用于从类路径中检索单个资源。

答案 1 :(得分:1)

您不能将File与jar条目一起使用。您必须找到jar文件并将其视为zip文件。

答案 2 :(得分:1)

您使用文件夹的相对路径,并且从IDE运行时,相对路径可以正常工作,因为它们相对于项目根目录。 但是,当您运行jar时,JVM会假定相对路径是相对于jar所在目录的。

如果您只想查看public class ConfiguracaoFirebase { private static DatabaseReference referenciaFirebase; private static FirebaseAuth autenticacao; public static DatabaseReference getFirebaseReference(){ if (referenciaFirebase == null){ referenciaFirebase = FirebaseDatabase.getInstance().getReference(); } return referenciaFirebase; } public static FirebaseAuth getFirebaseAutenticacao(){ if (autenticacao == null){ autenticacao = FirebaseAuth.getInstance(); } return autenticacao; } } 的工作方式,则可以使用该文件夹的完整路径。