我正在尝试解析在Linux环境中运行cat /proc/mounts
的结果。
当装载包含空格等特殊字符时,它们会被转义。一个例子是
/home/user/media\040/image.dd /media/dd ...
其中\ 040实际上是一个空格。
我试图在java中解析它但不想编写一个手动解析器,因为我必须相信这已经完成并且比我更强大。是否有一个负责解码的课程?我发现了一个或两个八进制解码器,但它们不能与文本和八进制混合使用。
答案 0 :(得分:2)
您可以使用C中的getmntent解析/ proc / mounts。
您可以在Java中实现它,符合规则:
空格(\ 040),制表符(\ 011),换行符(\ 012)和反斜杠(\ 134)
或者没有意味着交换分区。
man 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”等等可能会更简单。
答案 1 :(得分:1)
我使用Apache Commons Lang结束了。
这似乎可以正确地解决所有问题。