如何从目录文件列表中排除具有特定扩展名的文件?”

fnatzsnv  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(232)

我正在递归地创建一个目录下的文件列表。我有一个变量(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);
     }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题