我正在尝试解析cat /proc/mounts
在 Linux 环境中运行的结果。
当安装包含特殊字符(例如空格)时,它们会被转义。这方面的一个例子是
/home/user/media\040/image.dd /media/dd ...
其中 \040 实际上是一个空格。
我正在尝试在 java 中解析它,但不想编写手动解析器,因为我必须相信这已经完成并且比我做得更稳健。有没有负责解码的类?我找到了一两个八进制解码器,但它们不适用于混合文本和八进制。
您可以在 C 中使用 getmntent 解析 /proc/mounts。
您可以根据规则在Java中实现它:
空格 (\040)、制表符 (\011)、换行符 (\012) 和反斜杠 (\134)
或 none 表示交换分区。
男人getmntent:
mntent结构定义如下:
struct mntent {
char *mnt_fsname; /* name of mounted file system */
char *mnt_dir; /* file system path prefix */
char *mnt_type; /* mount type (see mntent.h) */
char *mnt_opts; /* mount options (see mntent.h) */
int mnt_freq; /* dump frequency in days */
int mnt_passno; /* pass number on parallel fsck */
};
Since fields in the mtab and fstab files are separated by whitespace, octal escapes are
used to represent the four characters space (\040), tab (\011), newline (\012) and back-
slash (\134) in those files when they occur in one of the four strings in a mntent struc-
ture. The routines addmntent() and getmntent() will convert from string representation to
escaped representation and back.
另一种方式:直接解析“mount”的结果。用“on”、“type”等来分割它们可能更简单。
我最终使用了 Apache Commons Lang。
这似乎使一切都变得正确。