我正在递归地创建一个目录下的文件列表。我有一个变量(unpack\u ext)被定义为常量并导入以从搜索/文件列表中排除。
目标是返回包含(stats\u file)变量的所有文件的文件列表,而不搜索包含(unpack\u ext)的任何目录这是代码的一部分:
我传入一个名为basedir的变量,这是搜索的起点。我只想列出匹配的文件(stats\u file),但是由于目录名中包含(unpack\u ext)的目录的大小,我需要排除这些文件,因为它们已经在应用程序的其他部分中可用。
Spublic class FindStatFilesTag extends BaseTag
{私有字符串basedir;
@Override
public void doTag() throws JspException, IOException
{
if ((!isEmpty(var)) && (!isEmpty(baseDir)))
{
if (baseDir.contains("TS"))
{
String pmr = baseDir;
JspContext context = getJspContext();
baseDir = BASE_SF_PATH + "TS" + pmr.charAt(2) + pmr.charAt(3) + pmr.charAt(4) + "/" + pmr.charAt(5) + pmr.charAt(6) + pmr.charAt(7) + "/" + baseDir;
List<File> fileList = new ArrayList<File>();
String startDir = baseDir;
String dirName = startDir + "/" ;
File dir = new File(dirName);
fileList.addAll(listAll(dir));
Map<String, List<FileInfo>> fileInfoMap = new TreeMap<String, List<FileInfo>>();
for (Iterator<File> iter = fileList.iterator(); iter.hasNext();)
{
File file = iter.next();
String name = file.getAbsolutePath();
String shortName = "";
if ((name.contains(STATS_FILE)) && (!name.contains(UNPACK_EXT)))
{
shortName = name.substring(name.indexOf(STATS_FILE));
}
FileInfo fileInfo = new FileInfo(name, "", file.length());
if (fileInfoMap.containsKey(shortName))
{
List<FileInfo> fileInfoList = fileInfoMap.get(shortName);
if (!fileInfoList.contains(fileInfo))
{
fileInfoList.add(fileInfo);
Collections.sort(fileInfoList);
}
}
else
{
List<FileInfo> fileInfoList = new ArrayList<FileInfo>();
fileInfoList.add(fileInfo);
fileInfoMap.put(shortName, fileInfoList);
}
}
context.setAttribute(var, fileInfoMap);
}
暂无答案!
目前还没有任何答案,快来回答吧!