【发布时间】:2013-12-17 21:34:12
【问题描述】:
我正在尝试从文件夹中读取文本文件,但当前该文件正在被另一个进程访问。因此,我得到一个例外,即“...文件正在被另一个进程访问”。
我正在使用以下代码
class program
{
static void Main(string[] args)
{
string lFileData = string.Empty;
try
{
if (args.Count() > 0)
lFileData = ReadLogFile(args[0]);
Console.WriteLine("{0}", lFileData);
}
catch(Exception ex)
{
Console.WriteLine("{0}", ex.Message.ToString());
}
Console.ReadLine();
}
public static string ReadLogFile(string sFileLocation)
{
string lResult = string.Empty;
var inStream = new FileStream(sFileLocation, FileMode.Open, FileAccess.Read, FileShare.Read);
using (var reader = new StreamReader(inStream))
{
lResult= reader.ReadToEnd();
}
return lResult;
}
}
但是当我们通过记事本打开同一个文件时,即使文件正在被另一个进程访问,也会显示文本文件的内容。
我们也想做同样的事情——读取文件的内容而不做任何修改。 因此我尝试了这个:
var inStream = new FileStream(sFileLocation, FileMode.Open, FileAccess.Read, FileShare.Read);
但是,即便如此,我们也会遇到同样的异常。
谁能帮忙解决这个问题?
【问题讨论】:
-
您能提供演示问题的代码或步骤吗?我不清楚你是如何重现这个问题的。
-
似乎在这里stackoverflow.com/questions/9759697/… 讨论了同样的问题
-
使用
FileShare.ReadWrite? -
你需要有一个被其他应用程序独占访问的文件,Post运行上面的代码,cmdline参数ash文件路径被其他应用程序独占访问。
-
@Matthew Watson,我们正在使用这个 FileShare Enum,它不起作用,然后我们将其更改为 FileShare.Read。
标签: c# .net filestream