所以我一直在做一些研究,并找到了一个解决我的问题的黑客解决方案,这就是:我如何确定我在源文件夹中加载的资源是否是从jar文件中提取的,或者是在Netbeans autoconfigs的构建目录中?
这是我迄今为止所发现的: 我注意到如果我用
加载项目中的文件File file = this.getClass().getClassLoader().getResource(somefile.txt);
对
的呼吁System.out.println(File.getPath());
将输出这样的内容到控制台:
jar:path/to/file.txt
我可以用String函数测试
path.contains("jar");
获取一个布尔值,似乎告诉我资源是否在jar文件中。
我的问题我想是否有更好的解决方案,或者这是否是首选方法?
我愿意接受建议或任何答案
答案 0 :(得分:1)
ClassLoader.getResource(String)
返回一个网址,没有文件。您应该检查getProtocol()
方法返回的内容,而不是将其转换为字符串并使用String.contains()调用:
URL url = this.getClass().getClassLoader().getResource("/somefile.txt");
if(null != url){
System.out.println(url.getProtocol());
}