在插件中,如何正确获取目录&它的内容来自src / main / resources?

时间:2016-10-27 19:24:26

标签: java eclipse maven directory

我正在Eclipse中编写Java Maven插件,在其中我想从src/main/resources访问一些文件。由于插件不知道文件和实际文件名的数量,我计划将文件存储在插件将知道其名称的某个目录中。例如,给定文件结构:

src/main/resources
src/main/resources/dir
src/main/resources/dir/fileA
src/main/resources/dir/fileB

该插件需要访问fileAfileB,但不会知道他们的名字。但是,该插件将知道它要访问的文件位于目录dir中。 我的问题是,我想了解如何从dir正确访问src/main/resources,以便在插件运行时轻松解析内容。

我在网上找到了很多类似的问题/教程,但大多数都是为了访问不是目录的文件(或者我只是搜索得不够好)。例如,我发现使用问题Read file from /src/main/resources/中的classLoader.getResourceStream(resource)建议对文件读取很有用。但是,当资源是目录时,从流中读取不返回任何内容。

现在我正在执行以下操作:1。获取所需目录的位置(基本上是JAR)和2.访问目录的内容,但我想知道是否有更好的方法,因为它感觉很乱:< / p>

// Get location of desired directory - basically the code's JAR file
ClassLoader classLoader = getClass().getClassLoader();
String jarLocation = classLoader.getResource("dir").getFile();
jarLocation = jarLocation.replace("file:","").replace("!/dir","");
JarFile jarFile = new JarFile(new File(jarLocation));

// Parse Jar for desired directory content 
Enumeration<JarEntry> entries = jarFile.entries();
while (entries.hasMoreElements()) {
  JarEntry entry = entries.nextElement();
  if (entry.getName.contains("dir/") && !entry.isDirectory()) {
    // Process entry file in some way
  }
}

0 个答案:

没有答案