用c#开发一个文件读取例程

本文关键字:一个 文件 读取 例程 开发 | 更新日期: 2023-09-27 18:12:36

我使用c#.net开发了一个文件读取例程,它将使用合适的数据类或结构将整个文件内容读入内存。

我有一个600MB的文本文件,其中有RoadId和许多其他条目。我必须使用查询方法读取该文件,所以我使用c#.net中的流阅读器逐行读取。但是我想知道在c#.net中是否有其他的方法可以节省内存和更少的时间,或者通过将文本转换为二进制然后读取。

不知道,请指导我。

我把我的代码读取整个文件一行一行…

     public static void read_time()
    {
        DateTime end;
        StreamReader file =
           new StreamReader(@"C:'Users'Reva-Asus1'Desktop'DTF Test'F_Network_out.txt");
        DateTime start = DateTime.Now;
        while ((file.ReadLine()) != null) ;
        end = DateTime.Now;
        Console.WriteLine();
        Console.WriteLine("Full File Read Time: " + (end - start));
        Console.WriteLine();
        file.Close();
        Console.WriteLine("Data is read");
        Console.ReadLine();
        return;
    }

//这个查询方法是从控制台获取用户的roadId并显示记录....

     public static void querying_method()
    {
       Console.WriteLine("Give a RoadId to search record'n");
       DateTime start, end;
       string id =Console.ReadLine().Trim();
        try
        {
            System.IO.StreamReader file =
               new System.IO.StreamReader(@"C:'Users'Reva-Asus1'Desktop'DTF Test'F_Network_out.txt");
            string line1;
            int count = 1;
            start = DateTime.Now;
            while ((line1 = file.ReadLine()) != null)
            {
                if(line1 == id)
                {
                    string line2 = " ";
                    while (count != 14)
                    {
                        Console.WriteLine(line2 = file.ReadLine());
                        count++;
                    }
                    int n = Convert.ToInt16(line2);
                    while (n != 0)
                    {
                        Console.WriteLine(line2 = file.ReadLine());
                        n--;
                    }
                    break;
                }
            }
            end = DateTime.Now;
            Console.WriteLine("Read Time for the data record: " + (end - start));
            Console.ReadLine();
            return;
        }
        catch (Exception)
        {
            Console.WriteLine("No ID match found in the file entered by user");
            Console.ReadLine();
            return;
        }
    }

用c#开发一个文件读取例程

你可以这样写:

  foreach (var line in File.ReadLines(path))
  {
    // TODO: Parse the line and convert to your object...
  }

File.ReadLines(YourPath)正在后台使用StreamReader,所以你可以继续使用它。这里是参考代码。因此,如果您已经使用StreamReader仅读取一行,则不需要更改任何内容。

using (StreamReader sr = new StreamReader(path, encoding))
{
    while ((line = sr.ReadLine()) != null)
    {
        //You are reading the file line by line and you load only the current line in the memory, not the whole file.
        //do stuff which you want with the current line.
    }
}