2013-04-12 74 views
-2

我想在一行旁边写一个字符串,随机可以是任何行,我也想知道如何从它中删除一行,这里是我的StreamReader作品:C# - 在行旁边写一个字符串或删除一个字符串

using (StreamReader sb = new StreamReader("admin.txt")) 
{ 
    string[] ffoo = File.ReadAllLines("admin.txt"); 
    string[] ppoof = ffoo[0].Split(';'); 

    string line; 

    while ((line = sb.ReadLine()) != null) 
    { 
    if (line.StartsWith("#" + Server.Name.ToLower() + ": ")) 
    { 
     string[] punch = line.Split(';'); 
     if (!punch.Contains(Channel.Name.ToLower())) 
     { 
     StringBuilder str = new StringBuilder("admin.txt"); 
     str.Append(Channel.Name.ToLower() + ";"); 
     return; 
     } 
    } 
} 

这里是清单是如何制造:

#main: alien;nobody;somebody; 
#devs: headdev;wae; 

它读取它只是罚款就不能写毗邻主通道的东西,我的意思是,我只能写一行或一个字符串在它的末尾是在dev上,我想在main上写一些东西,我也有一些关于如何删除的问题e来自主或开发人员的管理员。这个文件也会过大,在我们使用它之后可能会包含500行,所以请如果你能给出一个大文件的解决方案,谢谢!

+3

'StringBuilder'不会做你认为它做的事。 – SLaks

+0

@SLaks然后,我应该怎么做,写一条线,如何从它删除一个字符串? – 111WARLOCK111

回答

0

当调用StringBuilder.Append时,它追加到字符串的末尾。

当调用StringBuilder(string)构造函数时,它将附加到作为构造函数参数传递的字符串。

在这种情况下,您将“Admin.txt”作为字符串传递,但您确实想传递Admin.txt的内容,因此您需要阅读它的内容。

这应该做的伎俩:

string[] lines = File.ReadAllLines("admin.txt"); 
for (int i = 0; i < lines.Length; i++) 
{ 
     if (lines[i].StartsWith(string.Format("#{0}: ", Server.Name.ToLower())) 
     { 
      if (!lines[i].Split(';').Contains(Channel.Name.ToLower())) 
       lines[i] += ";" + Channel.Name.ToLower(); 
     } 
    } 
File.WriteAllLines("admin.txt", lines); 

对不起,如果我误解你想,虽然做的事情。

+0

有什么问题,不知道为什么,但我试过,每当客户端连接到服务器,并运行此客户端崩溃,也许它在聊天中产生很多错误 – 111WARLOCK111

+0

你可以尝试断点和检查? – Bauss

相关问题