Java:FTP服务器列表的正则表达式?

时间:2012-07-02 02:07:01

标签: java ftp ftp-client ftp-server

我正在用Java编写FTP客户端处理程序,我不能使用像Apache这样的FTP库。

我的问题是我以这种格式从服务器收到列表:

drw-rw-rw- 1 ftp ftp                0 Mar 17 06:10 Tor Browser
-rw-rw-rw- 1 ftp ftp          1538814 Jun 26 00:23 setup.exe
-rw-rw-rw- 1 ftp ftp           142570 May 24 05:28 satellite A665-S6086.pdf

虽然我只需要文件/目录名称和大小。

请建议我将列表缩小到名称和大小,同时记住列之间的间距差异和文件名中的间距。

提前谢谢大家:)

2 个答案:

答案 0 :(得分:0)

由于您只想获取数据,因此可以使用此正则表达式:

"(?m)^.{20}\\s*(\\d+).{14}(.*)$"

构造一个Pattern,并获得与输入字符串对应的Matcher并开始提取匹配项。可以在group(1)中获取大小,并且可以在group(2)中获取文件名。

答案 1 :(得分:0)

使用

    Pattern sizeAndNamePattern = Pattern.compile(
            "^-.*?(\\d+) \\w{3} \\d{2} \\d{2}:\\d{2} (.*)$", Pattern.MULTILINE);

    for (Matcher matcher = sizeAndNamePattern.matcher(dirListing); matcher.find();) {
        System.out.println(matcher.group(1) + " " + matcher.group(2));
    }

如果您还想查看目录,请删除模式中的第一个“ - ”。如果性能是一个问题,你应该考虑一个更有选择性的模式,避免。*?在开始。