public void Parse() { Posture p = new Posture(); bool IsFirstElement = true; StreamReader sread = new StreamReader(_path); while (!sread.EndOfStream) { string buffer = sread.ReadLine(); buffer = buffer.TrimStart(); if ('#' == buffer[0]) // 注释行 { continue; } if (':' == buffer[0]) { continue; } string[] splitbuff = buffer.Split(new Char[] { '\t', ' ' }, StringSplitOptions.RemoveEmptyEntries); Bone bone = new Bone(); bone.Name = splitbuff[0]; if (1 == splitbuff.Length) { if (!IsFirstElement) { _postures.Add(p.Clone()); p.Bones.Clear(); } if (IsFirstElement) { IsFirstElement = false; } continue; } List <string> dofss = new List <string>(); for (int i = 1; i < splitbuff.Length; i++) { dofss.Add(splitbuff[i]); } bone.Dofs = dofss.ToArray(); p.Bones.Add(bone.Clone()); if (sread.EndOfStream) { _postures.Add(p.Clone()); } } sread.Close(); }