我有一个.ear
,一个.jar
和一个.war
包。我正在通过检查文件系统和注册映射来动态地阅读我的 servlet 类。
问题是它适用于开发,我能够读取目录并且正确的文件名确实能够创建映射。问题是如果我把耳朵包起来就不行了:
- 使用新的
File( ... ).isDirectory()
- 检查我是否在目录中,对于有效的目录路径总是返回 false。
- 使用新的
File( ... ).listFiles()
- 为了能够列出目录中的文件,总是返回
null
有效的目录路径。
- 为了能够列出目录中的文件,总是返回
我已经通过检测不以扩展名结尾的结束路径解决了目录检查问题(出于我的目的,这样的验证就足够了),但我仍然无法列出给定路径中的文件。
鉴于这种情况,我有一个问题:
如何在运行时从包中列出文件名.war
?
当前代码:
private void addAllFiles( File dir, ArrayList<ConventionPath> list ) {
for ( File file : dir.listFiles() ) { // dir.listFiles() comes null here =/
String absolutePath = file.getAbsolutePath();
boolean isActionDir = ConventionFiles.isActionDir( absolutePath, fileSeparator );
boolean isActionFile = ConventionFiles.isActionFile( absolutePath );
if ( isActionDir ) {
addAllFiles( file, list );
}
if ( isActionDir || isActionFile ) {
ConventionPath conventionPath =
new ConventionPath( absolutePath, fileSeparator );
list.add( conventionPath );
}
}
}