我正处于从直接在CSV文件上运行的客户端替换某些功能的情况,该文件用作系统的配置文件。
搜索中可用的大多数案例都是关于从CSV读取其他格式。
Other将整个CSV放入内存,附加专用行和更改,然后将它们写回新文件(或覆盖现有文件)。
我想更聪明地完成这项任务,并寻求建议和代码创意。
我们可以假设每次只有一个用户,应该可以访问该文件
该文件使用File.ReadLines().NET 4读取。
我的示例项目的一部分,
var lines = from l in File.ReadLines("/Linq2Csv/data.csv")
where l.Split(',')[0].StartsWith("Jonas") //Just test 'n pick 1 line
select new
{
Name = l.Split(',')[0],
...
答案 0 :(得分:1)
CSV文件只是一个顺序文本文件。
如果您想修改拥有的内容以将整个文件读入内存,请在那里进行修改并再次将其写出来。
假设文件的更一般情况包含以下内容:
ABCDEFGHIJKLMNOPQRSTUV
如果你想从中间删除“IJLKM”,你必须阅读文件的剩余部分(NOP ...),这样你就可以将它改组以满足(... FGH)。
如果要在“M”和“N”之间插入“0123456789”,则需要读取N-Z,否则新字符将覆盖“NOPQRSTUVW”。
答案 1 :(得分:1)
.NET Framework v4.0附带了一个用于内存映射文件支持的新类,请参阅
答案 2 :(得分:0)
在.NET中实现此目的的唯一方法是将其从csv文件移动到真正的数据库中。
您可以像打开数据库中的表一样打开文本文件。请参阅ConnectionString示例以在此处连接到它:http://www.connectionstrings.com/textfile
但是,即使使用.NET将其视为数据库,也不会阻止底层代码在更新时覆盖整个文件。
文本文件不适合并发用户。这就是真正的数据库存在的原因。