用Java解析/ proc / mounts

时间:2012-11-26 22:23:45

标签: java parsing encoding

我正在尝试解析在Linux环境中运行cat /proc/mounts的结果。

当装载包含空格等特殊字符时,它们会被转义。一个例子是

/home/user/media\040/image.dd /media/dd ...其中\ 040实际上是一个空格。

我试图在java中解析它但不想编写一个手动解析器,因为我必须相信这已经完成并且比我更强大。是否有一个负责解码的课程?我发现了一个或两个八进制解码器,但它们不能与文本和八进制混合使用。

2 个答案:

答案 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)