Exemple #1
0
 private void ProcessLink(string name, LSFile file)
 {
     String[] segments = name.Split(new string[] { " -> " }, StringSplitOptions.RemoveEmptyEntries);
     // we should have 2 segments
     if (segments.Length == 2)
     {
         file.LinkPath = segments[1].Trim();
     }
 }
Exemple #2
0
        private LSFile ProcessLine(string line)
        {
            if (String.IsNullOrWhiteSpace(line))
            {
                return(null);
            }
            var m = Regex.Match(line.Trim(), LS_PATTERN_EX, RegexOptions.Compiled);

            if (!m.Success)
            {
                return(null);
            }
            LSFile file = new LSFile();

            file.Name       = m.Groups[9].Value;
            file.Permission = m.Groups[1].Value;
            var sized = m.Groups[4].Value.Trim();

            file.Size = Int32.Parse(sized);
            //folder
            file.IsFolder = false;
            switch (file.Permission[0])
            {
            case 'b':
                file.Type = "Block";
                break;

            case 'c':
                file.Type = "Character";
                break;

            case 'd':
                /* 遇到一个recovery模式的手机,文件夹也有大小,切大小为4096,此处临时修改为此方案,以后根据测试情况在看 */
                file.Type = "Directory"; if (String.IsNullOrWhiteSpace(sized) || file.Size == 4096)
                {
                    file.IsFolder = true;
                }
                break;

            case 'l':
                file.Type = "Link";
                this.ProcessLink(file.Name, file);
                break;

            case 's':
                file.Type = "Socket";
                break;

            case 'p':
                file.Type = "FIFO";
                break;

            case '-':
            default:
                file.Type = "File";
                break;
            }
            //datetime
            String date1   = m.Groups[5].Value.Trim();
            String date2   = m.Groups[6].Value.Trim();
            String date3   = m.Groups[7].Value.Trim();
            String time    = m.Groups[8].Value.Trim();
            string datestr = String.Format("{0}-{1}-{2} {3}", date1, date2.PadLeft(2, '0'), date3, time);

            try
            {
                var date = DateTime.ParseExact(datestr, "yyyy-MM-dd HH:mm", CultureInfo.CurrentCulture);
                file.CreateDate = date;
            }
            catch (Exception ex)
            {
            }

            //link file
            //return
            return(file);
        }