0

我正在用 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

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

请建议我一种将列表减少到名称和大小的方法,请记住列之间的间距差异和文件名中的间距。

谢谢大家 :)

4

2 回答 2

0

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

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

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

于 2012-07-02T02:17:54.287 回答
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));
    }

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

于 2012-07-02T02:48:52.937 回答