我有一个原始网站,其中aspx webform和socket服务器访问存储数据的平面文件。 socketserver将访问要写入的相同文件,aspx c#代码可以访问这些文件进行读取。我认为锁定文件可能存在问题。我认为服务器快速写入文件并释放文件锁定是更高优先级。 webform应该能够在不中断服务器写入过程的情况下进行读取。做这个的最好方式是什么?是使用使用streamwriter吗?
服务器使用此调用,仅在写入文件时共享文件以进行读取。
if (!File.Exists(filepath))
{
using (FileStream fileStream = new FileStream(filepath, FileMode.CreateNew, FileAccess.Write, FileShare.Read))
{
using (TextWriter writer = new StreamWriter(fileStream))
{
writer.WriteLine(data);
m_clientSocket.Send(BitConverter.GetBytes(data.Length));
}
}
}
else
{
using (FileStream fileStream = new FileStream(filepath, FileMode.Append, FileAccess.Write, FileShare.Read))
{
using (TextWriter writer = new StreamWriter(fileStream))
{
writer.WriteLine(data);
m_clientSocket.Send(BitConverter.GetBytes(data.Length));
}
}
}
使用以下命令
读取webform using (FileStream stream = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (TextReader reader = new StreamReader(stream))
{
//string fileContents = tr.ReadToEnd();
while ((line = reader.ReadLine()) != null)
{
if (!string.IsNullOrEmpty(line))
{
lines.Add(line);
}
}
}
}
我希望这可以在不必锁定文件和管理访问权限的情况下工作,我不知道该怎么做。我希望能够让服务器随时锁定文件以便写入,但也允许aspx网页c#代码读取相同的文件。
感谢任何帮助。