0

在 C# 3.5 中以下最快的方法是什么:

  1. 遍历目录中的文件
  2. 读取文件的记录(固定长度为 247 个字符)
  3. 将每条记录的固定长度字符串转换为 Struct 或 Class。

谢谢

4

2 回答 2

0

这样写起来会比较快:

var myStructs = 
from file in Directory.GetFiles(".", "*.*", SearchOption.TopDirectoryOnly)
select ConvertFileToStructs(File.ReadAllText(file));

如果这是最快的方式,性能方面?可能不会,但不会有很大的不同。影响性能的是 ConvertFileToStructs() 函数中反序列化的实现。但要回答这个问题,我们需要知道您的文件的具体格式。


只需阅读您的评论。我建议进行以下解析:

List<MyStruct> ConvertFileToStructs(string content, int[] mapping)
{
    var records = new List<MyStruct>();
    int length = content.Length();
    for(int i = 0; i < length; i += 247)
         records.Add(ConvertRecordToStruct(content.Substring(i,247), mapping));
    return records;
}

MyStruct ConvertRecordToStruct(string record, int[] mapping)
{
    MyStruct s;
    s.Field1 =  record.Substring(mapping[0], mapping[1]);
    //set other fields
    return s;
}

这段代码可能会针对性能进行优化,但我认为它不会显着改变事情,特别是因为涉及到磁盘的 I/O 并且 Substring() 非常快(请参阅http://dotnetperls.com/substring)。当然,您必须在您的机器上进行测试。

于 2010-03-01T10:38:58.497 回答
0

处理文件的自定义类

   class customFile
        {
            string fileText;
            public string FileText
            {
                get { return fileText; }
                set { fileText = value; }
            }
        }

阅读所有文本

        string[] filePaths = Directory.GetFiles(dirPath);
        List<customFile> customFiles = new List<customFile>();
        foreach (string file in filePaths)
        {
            customFiles.Add(new customFile { FileText = File.ReadAllText(file) });
        }
于 2010-03-01T10:48:54.537 回答