我正在使用Jsch库通过SSH协议在服务器上进行一些操作。这些操作之一需要从“ ls -l” bash命令的输出中获取文件和目录名称。
我试图以这种方式分析字符串,但这非常糟糕:
private static final int STRING_CUT_POINT = 46;
String s = pName.substring(STRING_CUT_POINT);
if (s.length() > 0) {
int i = 0;
while (s.charAt(0) != ' ') {
s = pName.substring(STRING_CUT_POINT + i);
i++;
}
this.name = s.trim();
if (pName.charAt(0) == 'd') {
this.type = DIRECTORY;
} else {
this.type = this.getFileType(this.name);
...
这样,在这样的输出上...
drwxr-xr-x 2 mattia mattia 4096 22 mag 11.53 Desktop
我可以得到“桌面”,但是,例如,如果所有者名称较短,则输出为“ 11.53 Desktop”。
我也尝试使用string.lastIndexof(' ')
,但不适用于名称中包含空格的文件/目录。
有想法吗?