我正在用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
虽然我只需要文件/目录名称和大小。
请建议我将列表缩小到名称和大小,同时记住列之间的间距差异和文件名中的间距。
提前谢谢大家:)
答案 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));
}
如果您还想查看目录,请删除模式中的第一个“ - ”。如果性能是一个问题,你应该考虑一个更有选择性的模式,避免。*?在开始。