1

我有一个原始网站,其中 aspx webform 和套接字服务器访问存储数据的平面文件。套接字服务器将访问要写入的完全相同的文件,这些文件由 aspx c# 代码访问以进行读取。我认为锁定文件可能存在问题。我认为服务器快速写入文件并释放文件上的任何锁定是更高的优先级。网络表单应该能够在不中断服务器写入过程的情况下进行读取。做这个的最好方式是什么?是使用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));
                            }
                        }
                    }

使用以下命令读取的网络表单

        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# 代码读取相同的文件。

任何帮助表示赞赏。

4

0 回答 0