C# 如何使用C向文本文件中的特定行添加字符串#

C# 如何使用C向文本文件中的特定行添加字符串#,c#,C#,我需要你的帮助, 我正在尝试将字符串“MyString”添加到文本文件中的特定行中,但还不能。 例如 这是我的文本文件的内容: First Name. Last Name. Date of Birth. Counrty. 现在我要找的是在“出生日期”之后的下一行中添加“MyString”将是“City”。所以结果可以是这样的: First Name. Last Name. Date of Birth. City. Counrty. 我试过: File.AppendAllText(@"C:\

我需要你的帮助, 我正在尝试将字符串“MyString”添加到文本文件中的特定行中,但还不能。 例如 这是我的文本文件的内容:

First Name.
Last Name.
Date of Birth.
Counrty.
现在我要找的是在“出生日期”之后的下一行中添加“MyString”将是“City”。所以结果可以是这样的:

First Name.
Last Name.
Date of Birth.
City.
Counrty. 
我试过:

File.AppendAllText(@"C:\\Users\\Volki\\Desktop\\TextFile.txt", 
    string.Format("{0}{1}", "Date of Birth.", "City"));
  • 创建
    string[]currFile
    并将文件读取到其中(您将得到包含4个元素的数组)
  • 创建另一个
    string[]newFile
    ,但大小为
    currFile.Length+1
  • currFile
    复制到
    newFile
    中,但第四行设置为第五行(在新文件中,前三行是空的,第五行是空的)
  • 将城市存储到新文件的第四行
  • 保存到文本文件
如果我在评论中犯了一些错误,我会很快设置好它

编辑:

您可能会使用
Newtonsoft.Json
,这样您就有了类:

public User
{
    public string FirstName;
    public string LastName;
    public DateTime dateOfBirth;
    public string Country;
}
然后你像这样使用它:

public MyClass
{    

    public MyClass()
    {
        User user = new User();
        user.FirstName = "User1";
        ...
        WriteUser(user);

        User user1 = ReadUser();
        string username = user1.FirstName;
    }

    void WriteUser(User user)
    {
        string stringToWriteToFile = JsonConvert.SerializeObject(user);
        //Write this string to file
    }

    User ReadUser()
    {
        string stringFromFile = ...
        return JsonConvert.DeserializeObject<User>(stringFromFile);
    }
}
string PathFile=@"c:\temp\testxx.TXT";

List<string> Listvalue = File.ReadAllLines(PathFile).ToList();
int IndexSearch = Listvalue.IndexOf("Date of Birth.");

if (IndexSearch>=0)
{
   Listvalue.Insert(IndexSearch+1, "City."); 
   File.WriteAllLines(PathFile, Listvalue.ToArray()); 
}
公共MyClass
{    
公共MyClass()
{
用户=新用户();
user.FirstName=“User1”;
...
编写器(用户);
User user1=ReadUser();
字符串username=user1.FirstName;
}
无效写入器(用户)
{
string stringToWriteToFile=JsonConvert.SerializeObject(用户);
//将此字符串写入文件
}
用户ReadUser()
{
字符串stringFromFile=。。。
返回JsonConvert.DeserializeObject(stringFromFile);
}
}

尝试以下方法:

public MyClass
{    

    public MyClass()
    {
        User user = new User();
        user.FirstName = "User1";
        ...
        WriteUser(user);

        User user1 = ReadUser();
        string username = user1.FirstName;
    }

    void WriteUser(User user)
    {
        string stringToWriteToFile = JsonConvert.SerializeObject(user);
        //Write this string to file
    }

    User ReadUser()
    {
        string stringFromFile = ...
        return JsonConvert.DeserializeObject<User>(stringFromFile);
    }
}
string PathFile=@"c:\temp\testxx.TXT";

List<string> Listvalue = File.ReadAllLines(PathFile).ToList();
int IndexSearch = Listvalue.IndexOf("Date of Birth.");

if (IndexSearch>=0)
{
   Listvalue.Insert(IndexSearch+1, "City."); 
   File.WriteAllLines(PathFile, Listvalue.ToArray()); 
}
stringpathfile=@“c:\temp\testxx.TXT”;
List Listvalue=File.ReadAllLines(PathFile.ToList();
int IndexSearch=Listvalue.IndexOf(“出生日期”);
如果(索引搜索>=0)
{
插入(IndexSearch+1,“城市”);
writeAllines(路径文件,Listvalue.ToArray());
}

执行此操作后,内存中会出现两个完整的文件副本。一次可以将其压缩到一行,但即使只有一个文件副本也会更好。我在编辑后的答案中添加了解决问题的另一种方法。我在编辑后的答案中添加了解决问题的另一种方法。如果文件很小,它可能会起作用,但它不会起作用将整个文件加载到内存不是一个好主意。这是一种方法…没有指定限制,但您可以提出更好的方法;)限制是RAM!!我做到了,看看我在问题上的评论。哈哈,他有一个文件,当然使用数据库是一个更好的主意,但这不是问题。。。