Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.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 从jar文件访问文件夹_Java - Fatal编程技术网

Java 从jar文件访问文件夹

Java 从jar文件访问文件夹,java,Java,我正在尝试使用一个jar文件,它本身就是另一个web项目中的web应用程序。在我使用eclipse的导出到jar功能创建的jar中,我将owl文件存储在一个文件夹中。要在jar中的代码中使用相对路径,我使用 MyClass.class.getResource("/folderName").getPath(); 当我部署(glassfish)并将该项目作为一个单独的应用程序使用时,这一点很好。但当我在另一个项目中使用相同的方法时,我改变了路径,如下所示: BufferedReader br

我正在尝试使用一个jar文件,它本身就是另一个web项目中的web应用程序。在我使用eclipse的导出到jar功能创建的jar中,我将owl文件存储在一个文件夹中。要在jar中的代码中使用相对路径,我使用

MyClass.class.getResource("/folderName").getPath(); 
当我部署(glassfish)并将该项目作为一个单独的应用程序使用时,这一点很好。但当我在另一个项目中使用相同的方法时,我改变了路径,如下所示:

 BufferedReader br = new BufferedReader(new InputStreamReader(MyClass.class.getResourceAsStream("/folderName"), "UTF-8"));

ArrayList<File> filesFromCommonOntology = new ArrayList<File>();
while(str = br.readLine() != null)
{
  File f = new File(line);
  System.out.println(f);
  filesFromCommonOntology.add(f);
}
for (int i = 0; i < filesFromCommonOntology.size(); i++)
{

file =  filesFromCommonOntology.get(i);
    String filePath = file.getPath();
    Model timeModel = FileManager.get().loadModel(filePath,
ApplicationConstants.N3);
  }

如何解决此问题?

当应用程序打包到jar中时,无法枚举文件夹中的文件。甚至很难想象这是如何工作的:您打开一个文件夹作为一个inptu流,并以这种方式读取文件名(在该文件夹中)

最简单的方法是添加一个文本文件,其中包含文件夹中的条目,可能有一些描述。MyClass.class.getResourceAsStream应该从jar打开文件(而不是文件夹)

如果您有大量的文件,您还可以尝试将自己的jar作为ZipFile重新打开,然后您可以使用ZipFile API搜索文件夹中的条目。然而,这更为复杂

BufferedReader br = new BufferedReader(new InputStreamReader(MyClass.class.getResourceAsStream("/folderName"), "UTF-8"));