从Java包中读取所有文件
我很想知道如何用Java阅读包中的所有条目。使用getRessource()可以获得单个文件。但是我想要所有的! 我的计划是从一个文件夹/包中读取所有文件(不带subdir),然后使用流过滤条目从Java包中读取所有文件,java,Java,我很想知道如何用Java阅读包中的所有条目。使用getRessource()可以获得单个文件。但是我想要所有的! 我的计划是从一个文件夹/包中读取所有文件(不带subdir),然后使用流过滤条目 希望您能帮助我。您可以获得所有文件的列表,然后对其进行筛选: File d = new File(System.getProperty("user.dir")); // user.dir returns the current working directory. for(File f : d.lis
希望您能帮助我。您可以获得所有文件的列表,然后对其进行筛选:
File d = new File(System.getProperty("user.dir")); // user.dir returns the current working directory.
for(File f : d.listFiles())
{
//do what you want to do
}
您可以获取所有文件的列表,然后对其进行筛选:
File d = new File(System.getProperty("user.dir")); // user.dir returns the current working directory.
for(File f : d.listFiles())
{
//do what you want to do
}
您可以使用Spring框架实现这一点。即使您没有开发Spring应用程序,也可以使用它们的实用方法。您想使用路径匹配源模式解析器:
public Resource[] getResources(String package)
{
PathMatchingResourcePatternResolver pmrpr = new PathMatchingResourcePatternResolver();
// turns com.myapp.mypackage into /com/myapp/mypackage/*
return pmrpr.getResources("/" + package.replace(".", "/") + "/*");
}
有关参考,请参阅:
org.springframework
spring上下文
4.2.4.1发布
您可以使用Spring框架实现这一点。即使您没有开发Spring应用程序,也可以使用它们的实用方法。您想使用路径匹配源模式解析器:
public Resource[] getResources(String package)
{
PathMatchingResourcePatternResolver pmrpr = new PathMatchingResourcePatternResolver();
// turns com.myapp.mypackage into /com/myapp/mypackage/*
return pmrpr.getResources("/" + package.replace(".", "/") + "/*");
}
有关参考,请参阅:
org.springframework
spring上下文
4.2.4.1发布
您可以使用库执行此操作
您可以创建一个反射对象,让它为您进行扫描。这就像做这样的事情一样简单
Reflections reflections = new Reflections("my.package");
Set<String> resourceStrings = reflections.getResources(s -> true /*match all resources*/);
Set<URL> resources = resourceStrings.stream()
.map(s -> getClass().getResource(s))
.collect(Collectors.toSet())
Reflections=newreflections(“my.package”);
设置resourceStrings=reflections.getResources(s->true/*匹配所有资源*/);
Set resources=resourceStrings.stream()
.map->getClass().getResource)
.collect(收集器.toSet())
您可以使用库执行此操作
您可以创建一个反射对象,让它为您进行扫描。这就像做这样的事情一样简单
Reflections reflections = new Reflections("my.package");
Set<String> resourceStrings = reflections.getResources(s -> true /*match all resources*/);
Set<URL> resources = resourceStrings.stream()
.map(s -> getClass().getResource(s))
.collect(Collectors.toSet())
Reflections=newreflections(“my.package”);
设置resourceStrings=reflections.getResources(s->true/*匹配所有资源*/);
Set resources=resourceStrings.stream()
.map->getClass().getResource)
.collect(收集器.toSet())
你是从罐子里读出来的吗?从技术上讲,它是一个zip文件,所以你可以这样对待它。它的可能的重复与其说是重复的,不如说是重复的,因为这个主题是关于文件(资源),然而,另一个主题是关于类的。你从一个jar读它们吗?从技术上讲,它是一个zip文件,所以你可以这样对待它。它的可能的重复不是那么多的重复,因为这个主题是关于文件(资源),但是,另一个主题处理类。这看起来不错。现在user.dir给了我项目根文件夹中的所有文件。如何更改参数以获取特定目录(如src/test/resources)中的文件??如果我像这样更改参数,就会得到一个NullPointerException。@SaschaZeller将其连接起来。使用:新文件(System.getProperty(“user.dir”)+“/src/test/resources”)
哇,你们这些家伙。。。这个答案充满了坏习惯。如果您的程序打包为jar呢?如果它是从构建目录之外启动的呢?为什么要连接文件路径?这完全违背了Java的精神,Java到处都是一次编写运行的,这看起来很不错。现在user.dir给了我项目根文件夹中的所有文件。如何更改参数以获取特定目录(如src/test/resources)中的文件??如果我像这样更改参数,就会得到一个NullPointerException。@SaschaZeller将其连接起来。使用:新文件(System.getProperty(“user.dir”)+“/src/test/resources”)
哇,你们这些家伙。。。这个答案充满了坏习惯。如果您的程序打包为jar呢?如果它是从构建目录之外启动的呢?为什么要连接文件路径?这完全违背了Java的精神,Java到处都是一次编写运行的。