2013-07-01 2 views
0

Я создаю пусковую установку для игры, которую создал друг, и я создаю.
Я пытаюсь читать обновление манифеста, чтобы получить то, что новые файлы мне нужно скачать
Сейчас я файл lay'ed из но я не знаю, как читать егоИзвлечение данных из манифеста и использование данных для получения обновлений

Линии фалов как это Md5 затем File Like CHECKSUM.MD5 с контрольными суммами будет содержать d41d8cd98f00b204e9800998ecf8427e * apples.txt

Я озадачен я try'ed положить его в 2 отдельные списки с

thearray.replace(" ", "").split('*'); 

Но очень л по-английски и не похоже, что для этого мне нужен такой длинный код. Мне нужно, чтобы строка из файла была прочитана в текущем каталоге (я могу это сделать, если я могу как-то разделить/организовать ее)

Прямо сейчас я вижу, что я пытался уйти, но в тупике. .

var main = new frmMain(); 
if (File.Exists("checksums.md5")) { File.Delete("checksums.md5"); } 
main.Download(updateurl + "checksums.md5", "checksums.md5"); 
string[] checksumfile = System.IO.File.ReadAllText("checksums.md5").Replace(" ", "").Split('*'); 

что я должен сделать, чтобы получить эту работу так, как я хочу? .. Проверка все файлы с и положить CHECKSUM.MD5 с контрольными суммами файлов, которые необходимо обновление в список будет обновляться позже ..

Чтобы быть ясным (я не объясняю ничего хорошего), файлы в контрольной сумме.md5 будут иметь такой путь
d41d8cd98f00b204e9800998ecf8427e * папка \ apples.txt
На сайте файл будет в updateurl/файлы/папки/apples.txt
На клиенте/пусковую файл будет находиться в папке. \ \ apples.txt

Спасибо за чтение! Я знаю, как делать основные вещи, как, для того чтобы использовать и вещи просто идея озадачен меня ..

public static string updateurl = "http://localhost/files/"; 

ответ

0

Проверьте это: http://www.regular-expressions.info/repeat.html

Это очень полезный инструмент для работы с текстом.

Если ваши файлы выглядеть следующим образом:

[контрольная сумма] [пробел] * [путь_к_файл] [конец строки]

[контрольная сумма] [пробел] * [путь_к_файл] [конец строки ]

[контрольная сумма] [пробел] * [файлpath] [конец строки] . , ,

эта модель должна работать:

string pattern = @"(?<= [*])[^\r\n]*"; 

    var matches = Regex.Matches(@sourceString, @pattern); 
    foreach (Match m in matches) 
    { 
     Console.Writeline(m.Value); 
    } 

Regex класс также имеет метод Replace, который является гораздо более гибким, чем String.Заменить

EDIT

Я не знаю, если это помогает или если я совершенно не понял вы снова :) Некоторые идеи, как организовать ваши данные:

List<FileData> result = (from a in Regex.Split(s, @"\r\n").Cast<string>().Select(a => Regex.Split(a, @" [*]")) 
         select new FileData 
         { 
          Checksum= a[0], 
          Filepath = a[1], 
          ShouldUpdate = FileData.CheckShouldUpdate(a[0],a[1]) 
         }).ToList(); 

или:

List<FileData> result = (from a in Regex.Split(s, @"\r\n").Cast<string>().Select(a => Regex.Split(a, @" [*]")) 
         where FileData.CheckShouldUpdate(a[0], a[1]) 
         select new FileData 
         { 
          Checksum = a[0], 
          Filepath = a[1] 
         }).ToList(); 

...

class FileData 
     { 
      public string Checksum { get; set; } 
      public string Filepath { get; set; } 
      public bool ShouldUpdate { get; set; } 
      public FileData() { } 
      public static bool CheckShouldUpdate(string checksum, string filename) 
      { 
       // some check logic here... 
       return true; 
      } 

     } 
+0

Спасибо! Ты помог мне, и я бесконечно благодарен! –

+0

Im получает одну ошибку, так как я ее устанавливал, индекс был за пределами массива. Это на | Список результат –

+0

^EDIT: У меня было место в файле. РАБОТАЕТ отлично !!! СПАСИБО! –