Exemple #1
0
 //Если сервер работает на nix-ах
 private FileStruct ParseFileStructFromUnixStyleRecord(string record)
 {
     //Предположим. тчо запись имеет формат dr-xr-xr-x   1 owner    group           0 Nov 25  2002 bussys
     FileStruct f = new FileStruct();
     if (record[0] == '-' || record[0] == 'd')
     {// правильная запись файла
         string processstr = record.Trim();
         f.Flags = processstr.Substring(0, 9);
         f.IsDirectory = (f.Flags[0] == 'd');
         processstr = (processstr.Substring(11)).Trim();
         //отсекаем часть строки
         _cutSubstringFromStringWithTrim(ref processstr, ' ', 0);
         f.Owner = _cutSubstringFromStringWithTrim(ref processstr, ' ', 0);
         f.CreateTime = getCreateTimeString(record);
         //Индекс начала имени файла
         int fileNameIndex = record.IndexOf(f.CreateTime) + f.CreateTime.Length;
         //Само имя файла
         f.Name = record.Substring(fileNameIndex).Trim();
     }
     else
     {
         f.Name = "";
     }
     return f;
 }
Exemple #2
0
 //Парсинг, если фтп сервера работает на Windows
 private FileStruct ParseFileStructFromWindowsStyleRecord(string Record)
 {
     //Предположим стиль записи 02-03-04  07:46PM       <DIR>          Append
     FileStruct f = new FileStruct();
     string processstr = Record.Trim();
     //Получаем дату
     string dateStr = processstr.Substring(0, 8);
     processstr = (processstr.Substring(8, processstr.Length - 8)).Trim();
     //Получаем время
     string timeStr = processstr.Substring(0, 7);
     processstr = (processstr.Substring(7, processstr.Length - 7)).Trim();
     f.CreateTime = dateStr + " " + timeStr;
     //Это папка или нет
     if (processstr.Substring(0, 5) == "<DIR>")
     {
         f.IsDirectory = true;
         processstr = (processstr.Substring(5, processstr.Length - 5)).Trim();
     }
     else
     {
         string[] strs = processstr.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
         processstr = strs[1];
         f.IsDirectory = false;
     }
     //Остальное содержмое строки представляет имя каталога/файла
     f.Name = processstr;
     return f;
 }
Exemple #3
0
 private List<FileStruct> GetList(string datastring)
 {
     List<FileStruct> myListArray = new List<FileStruct>();
     string[] dataRecords = datastring.Split('\n');
     //Получаем стиль записей на сервере
     FileListStyle _directoryListStyle = GuessFileListStyle(dataRecords);
     foreach (string s in dataRecords)
     {
         if (_directoryListStyle != FileListStyle.Unknown && s != "")
         {
             FileStruct f = new FileStruct();
             f.Name = "..";
             switch (_directoryListStyle)
             {
                 case FileListStyle.UnixStyle:
                     f = ParseFileStructFromUnixStyleRecord(s);
                     break;
                 case FileListStyle.WindowsStyle:
                     f = ParseFileStructFromWindowsStyleRecord(s);
                     break;
             }
             if (f.Name != "" && f.Name != "." && f.Name != "..")
             {
                 myListArray.Add(f);
             }
         }
     }
     return myListArray;
 }