从文件中提取字符串并使用c#保存在另一个字符串中

时间:2012-07-04 08:13:44

标签: c# string file

我有.txt文件,有300 000行。有没有办法从该文件中提取特定字符串(行)并保存在另一个.txt或excel中仅提取行? 我谈论日志文件,其中我保存了一些请求,并为每个请求花费了时间。我想要做的只是提取每个请求的时间,然后我将计算平均所用时间。

希望你们明白我在说什么。

编辑: .txt文件的格式为纯文本,每个请求都以。所以我有:

Starting date
//body of response from server
End date
Time: 3150,0792 ms <--- time taken

所以,我有10 000个请求和10 000个响应。我只需要提取每个时间,因为我会花很多时间手动滚动整个.txt文件并检查每次。

5 个答案:

答案 0 :(得分:4)

你可以通过文件类

来实现它
using (StreamWriter sw = File.AppendText("File2.txt")) 
{
    foreach (string line in File.ReadLines(@"d:\File1.txt"))
    {
        if (line.Contains("TheWordInLine"))//This is the line you want by matching something
        {
                sw.WriteLine("line);
        }
    }
}

答案 1 :(得分:4)

您可以尝试使用MemoryMappedFileTextReader。 MMF允许您访问大文件,文本阅读器允许您逐行处理文件。

using (var mmf = 
            MemoryMappedFile.CreateFromFile(@"c:\large.data", FileMode.Open
{
    using (MemoryMappedViewStream stream = mmf.CreateViewStream())
    {
        TextReader tr = new StreamReader(stream);
        while ((line = sr.ReadLine()) != null) 
        {
            Console.WriteLine(line);
        }
    }
}

答案 2 :(得分:3)

当然,您可以使用StreamReader / StreamWriter

using (var input = File.OpenText("input.log"))
using (var output = File.CreateText("output.log"))
{
    string line;
    while ((line = input.ReadLine()) != null)
    {
        if (SomeConditionOnLine(line))
        {
            output.WriteLine(line);
        }
    }
}

这将逐行读取输入文件,因此一次只在内存中有一行,如果此行满足您要查找的某些条件,则将其写入输出文件。它会很快并且消耗很少的内存,它可以用于巨大的输入文件。

答案 3 :(得分:3)

    private void extract_lines(string filein, string fileout)
    {
        using (StreamReader reader = new StreamReader(filein))
        {
            using (StreamWriter writer = new StreamWriter(fileout))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    if (line.Contains("what you looking for"))
                    {
                        writer.Write(line);
                    }
                }
            }
        }
    }

答案 4 :(得分:2)

正如其他人已经说过的那样,有一个格式的例子会很有用。 无论如何,你可以找到这个有用的工具:

http://filehelpers.sourceforge.net/

我在工作中使用它,它允许您解析和写入不同的文件格式。 希望它有所帮助