首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从清单中提取数据并使用这些数据获取更新

从清单中提取数据并使用这些数据获取更新
EN

Stack Overflow用户
提问于 2013-07-01 13:21:14
回答 1查看 98关注 0票数 0

我正在为一个朋友和我正在创建的游戏创建一个启动器。

我正在尝试读取更新清单,以获取需要下载的新文件

现在我已经把文件摆好了,但是我不知道怎么读。

这些文件的行如下所示,则像checksum.md5这样的文件将包含d41d8cd98f00b204e9800998ecf8427e *apples.txt

我被难住了,我试着把它放在两个不同的列表中

代码语言:javascript
复制
thearray.replace(" ", "").split('*');

但是它很长,看起来我不需要这么长的代码。我需要从文件行中读取当前目录中的文件(如果我知道如何拆分/组织它,我可以做到这一点)

现在,这就是我试图摆脱的东西,但却被难倒了..

代码语言:javascript
复制
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中的文件的路径如下

d41d8cd98f00b204e9800998ecf8427e *folder\apples.txt

在网站上,文件将位于updateurl/files/folder/apples.txt中

在客户端/启动器上,该文件应为.\folder\apples.txt格式

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

代码语言:javascript
复制
public static string updateurl = "http://localhost/files/";
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-01 15:40:26

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

这是一个非常有用的操作文本的工具。

如果您的文件如下所示:

校验和*文件路径

校验和*文件路径

checksum*文件路径。。。

这个模式应该是有效的:

代码语言:javascript
复制
    string pattern = @"(?<= [*])[^\r\n]*";

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

Regex类还有一个比String.Replace灵活得多的Replace方法

编辑

我不知道这是有帮助还是我又完全误解了你:)一些如何组织你的数据的想法:

代码语言:javascript
复制
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();

或者:

代码语言:javascript
复制
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();

..。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17397863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档