0

我正在为一个朋友和我正在创建的游戏创建一个启动器。
我正在尝试阅读更新清单以获取我需要下载的新文件
现在我已经布置好文件但我不知道如何阅读它

文件的行是这样的 Md5 然后 File Like checksum.md5 将包含 d41d8cd98f00b204e9800998ecf8427e *apples.txt

我很难过我已经尝试将它放入 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 检查所有文件并将需要更新的文件放入列表中以便稍后更新..

要清楚(我没有很好地解释) checksum.md5 中的文件将
具有 如下
路径
/launcher 文件将位于 .\folder\apples.txt

感谢您的阅读!我知道如何做一些基本的事情,比如,被使用和东西只是这个想法难倒了我..

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

1 回答 1

0

看看这个:http ://www.regular-expressions.info/repeat.html

这是处理文本的非常有用的工具。

如果您的文件如下所示:

[校验和][空格]*[文件路径][行尾]

[校验和][空格]*[文件路径][行尾]

[checksum][space]*[filepath][end of line] . . .

this pattern should work:

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

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

Regex class also has a Replace method that is far more flexible than String.Replace

EDIT

I don't know if it helps or if I completely misunderstood you again :) Some idea how to organize your data:

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();

or:

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;
            }

        }
于 2013-07-01T07:40:25.600 回答