C# StreamReader可以检查当前的行数吗?

问题描述 投票:1回答:1

我试图制作一个脚本,逐行读取一个TXT文件,并根据里面的内容改变标签。

c# streamreader
1个回答
4
投票

这个例子使用StreamReader类的ReadLine方法将文本文件的内容一行一行的读取到一个字符串中,你可以检查该行的字符串是否与你想要的标签匹配,然后用该标签替换。

int counter = 0;  
string line;  

System.IO.StreamReader file = new System.IO.StreamReader(@"c:\test.txt");  
while((line = file.ReadLine()) != null)  
{  
    System.Console.WriteLine(line);  
    counter++;  
}  

file.Close();  
System.Console.WriteLine("There were {0} lines.", counter);  

System.Console.ReadLine(); 

using System;
using System.IO;

public class Example
{
    public static void Main()
    {
        string fileName = @"C:\some\path\file.txt";

        using (StreamReader reader = new StreamReader(fileName))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                Console.WriteLine(line);
            }
        }
    }
}

希望能帮到你。


2
投票

你可以试试 查询 借助 线路:

  using System.IO;
  using System.Linq;

  ...

  var modifiedLines = File
    .ReadLines(@"c:\myInitialScript.txt") // read file line by line
    .Select((line, number) => {
       //TODO: relevant code here based on line and number

       // Demo: return number and then line itself
       return $"{number} : {line}";
     })
    // .ToArray() // uncomment if you want all (modified) lines as an array 
     ; 

如果你想把修改过的行写到文件中。

  File.WriteAllLines(@"c:\MyModifiedScript.txt", modifiedLines);

如果你坚持 StreamReader,你可以实现一个 for 循环。

  using (StreamReader reader = new StreamReader("c:\myInitialScript.txt")) {
    for ((string line, int number) record = (reader.ReadLine(), 0); 
          record.line != null; 
          record = (reader.ReadLine(), ++record.number)) {
      //TODO: relevant code here
      //     record.line - line itself
      //   record.number - its number (zero based)
    }
  }      
© www.soinside.com 2019 - 2024. All rights reserved.