c# - 每行的文本文件代表一个用户,我可以更新特定行吗?

标签 c# asp.net file-io

如果我有一个像这样的文本文件:

123, joe blow, USA

其中第一个值代表:

用户 ID、姓名、国家/地区

如果我的文件有 5000 行,我可以使用 C# 以某种方式更新特定行吗?

最佳答案

虽然可以更改文件中的一行 - 只有当替换文本的长度完全相同时,您才能安全地这样做。因为这种情况很少见,最好的办法是用新结果替换文件的全部内容。

基于行的文本文件不是存储信息的好格式,正是由于这个原因,这些信息可能会发生变化。

现在,假设文件不是太大,您可以将其整个加载到字符串数组中,替换特定行的文本,然后将文件写回:

using System.IO;

var linesOfText File.ReadLines( "/myfile.txt", Text.Encoding.UTF8 ).ToArray();

linesOfText[123] = "456, sally smith, USA";

File.WriteAllLines( "/myfile.txt", linesOfText );

编辑: 为了简洁起见,我在上面提供了一个使用索引位置更新特定行的示例。在任何实际使用中,您都应该解析行并搜索要更新/替换的行,而不是依赖偏移量。

如果文件太大,我不会使用上面的代码,大约 5,000 行 50 个字符相对较小 (< 1Mb) 所以,我不会担心。但是,如果您打算一遍又一遍地执行此类操作,您可能需要重新考虑如何存储这些数据。

关于c# - 每行的文本文件代表一个用户,我可以更新特定行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2837167/

相关文章:

c# - 与 ObjectContext 相比,为什么在 EF 4.1 中插入实体这么慢?

c# - 如何创建新的 Windows 窗体,并将其与已存在的线程关联?

c# - ASP.Net Core 注入(inject)设置

C输出: Adding a custom filename to a user input directory

c# - 计算数组中有多少数字在 1.5 - 35 C# 之间

c# - 如何使 DataGridView 立即提交编辑?

jquery - 无法从 asp.net 代码后面调用 jquery 函数

c# - 如何向ffmpeg提供登录用户名和密码?

java - 设置属性,并将它们存储在文件中

php - 使用相同库的多个文件的Python导入技术