首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PathPatternParser -不能组合模式:*.csv和*.txt

PathPatternParser -不能组合模式:*.csv和*.txt
EN

Stack Overflow用户
提问于 2021-07-15 05:55:39
回答 1查看 81关注 0票数 0

我定义了一个SftpInboundFileSynchronizer类。我想过滤远程文件,这是csv和txt文件的唯一。文件扩展名数组具有*.csv和*.txt值。

代码语言:javascript
复制
 SftpInboundFileSynchronizer fileSynchronizer = new 
                     SftpInboundFileSynchronizer(sftpSessionFactory());
 PathPatternParser pp = new PathPatternParser();
        PathPattern pattern = null;
 for(String fileExtension: fileExtensionArray) {
        if(pattern == null) {
            pattern = pp.parse(fileExtension);
        } else {
            pattern.combine(pp.parse(fileExtension));
        }
    }
   fileSynchronizer.setFilter(new 
        SftpSimplePatternFileListFilter(pattern.getPatternString()));

以上抛出以下异常

代码语言:javascript
复制
  java.lang.IllegalArgumentException: Cannot combine patterns: *.csv and *.txt

如何修复此错误?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-15 13:21:08

顾名思义,PathPattern.combine方法将组合这些模式。基本上是让它成为一个and。文件永远不能以.txt.csv结尾。一定是or。afaik,您不能用PathPattern来实现这一点。

但是,使用正则表达式是相当容易做到的。附带了一个组件,可以为您处理这个问题。您可以使用SftpRegexPatternFileListFilter而不是SftpSimplePatternFileListFilter

代码语言:javascript
复制
SftpRegexPatternFileListFilter filter = new SftpRegexPatternFileListFilter ("(?i)^.*\\.(csv|txt)$");

上面的表达式应该可以工作(我不是正则表达式的专家,所以它可能需要一些工作)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68388621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档