多个进程读取同一文件。

argue2000 2009-04-27 11:41:24
多进程,不是多线程

就是我生成的应用程序,不能同时打开多个应用程序,只能等第一个读取文件完毕后,再打开第二个去读取文件,否则显示读取文件冲突

不能像utralEdit那样,同时瞬发的对一个文件多次读。

下面是我读文件的代码:
FileStream fs = new FileStream(fileName, FileMode.Open);

byte[] version = new byte[32];
fs.Read(version, 0, version.Length);
String ver = Encoding.UTF8.GetString(version, 0, version.Length);

String verNumStr = CRegex.GetMatch(ver, "KTDictSeg Dict V(.+)", true);


while (fs.Position < fs.Length)
{
byte[] buf = new byte[sizeof(int)];
fs.Read(buf, 0, buf.Length);
int length = BitConverter.ToInt32(buf, 0);

buf = new byte[length];

T_DictStruct dict = new T_DictStruct();

fs.Read(buf, 0, buf.Length);

dict.Word = Encoding.UTF8.GetString(buf, 0, length - sizeof(int) - sizeof(double));
dict.Pos = BitConverter.ToInt32(buf, length - sizeof(int) - sizeof(double));
dict.Frequency = BitConverter.ToDouble(buf, length - sizeof(double));

dictFile.Dicts.Add(dict);
}
=================================================================================
StreamReader sr = File.OpenText(strAmbiguousChsNamePath);
string strLine = null;
while ((strLine = sr.ReadLine()) != null)
{
strLine = strLine.Trim();
if (strLine == "")
continue;
if (!m_AmbiguousChsNameTbl.ContainsKey(strLine))
m_AmbiguousChsNameTbl.Add(strLine, "");
}
sr.Close();

=======================================================================================

C#默认读文件的打开文件的句柄后,在读取结束之前。是不是其他的读取就不能再对这个文件读取了?
我网上搜了一下,有个FileInfo类,是不是可以实现我的这个要求。
...全文
565 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
izee 2009-04-27
  • 打赏
  • 举报
回复
使用System.IO.FileShare.None参数打开文件
dyshadow 2009-04-27
  • 打赏
  • 举报
回复


FileStream fs = new FileStream("", FileMode.Open, FileAccess.Read, FileShare.Read);



看看 可能能够解决。
zgke 2009-04-27
  • 打赏
  • 举报
回复
FileStream _Fs =new FileStream(@"C:\1.txt",FileMode.Open,FileAccess.Read,FileShare.Read);
System.IO.StreamReader _SR = new StreamReader(_Fs);


加上 FileShare.Read 看看.

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧