许多程序写入/读取一个文件

本文关键字:一个 文件 读取 多程序 | 更新日期: 2023-09-27 18:26:02

我正在用C#编写一个消息应用程序,它运行在网络上的共享文件服务器上。该程序由多个用户运行,该程序访问多台计算机之间共享的文件。因此,我需要使用StreamReader/StreamWriter同时访问多个程序的文件(编辑:我现在知道这不是一个好方法,但这正是我当时所需要的)。那么,如何使用多个程序访问一个文件而不会出现有关正在使用的文件的错误呢?

许多程序写入/读取一个文件

我认为你的方法将来会带来问题。如果我是你,我会考虑利用Redis pub/sub。

但是,既然你问。。。(我写了一篇关于这个的博客文章:http://procbits.com/2011/02/18/streamwriter-share-read-access-in-another-process/)

聊天数据生成器:

var fs = File.Open(@"C:'messages.txt", FileMode.Append, FileAccess.Write, FileShare.Read);
var sw = new StreamWriter(fs);
sw.AutoFlush = true;

您的应用程序或其他应用程序中的其他位置。。。

聊天数据的读者:

var fs = File.Open(@"C:'messages.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
var sr = new StreamReader(fs);

如果您需要一个包含多个用户/程序/实体的文件。。应该在不干扰彼此的情况下读/写,我建议(在其他解决方案中)考虑像使用简单的DB后端一样使用Sqlite。无需安装或服务设置。只需使用它的C# dll,基本上,根据您的请求,您就会得到您需要的东西。

一个用户在db file(INSERT)中写入,另一个用户可以从中读取(SELECT)

我认为您应该再三考虑使用文本文件作为对等通信手段
这就像是自讨苦吃。

请考虑使用P2P解决方案:
对等渠道聊天
使用WCF netPeerTCP绑定的简单对等聊天应用程序

这将为您提供一个更适合您需求的体系结构。