打开streamreader时出错,因为另一个进程使用了​​该文件

时间:2010-04-28 14:54:34

标签: asp.net locking streamreader

我正在开发一个应用程序来读取excel电子表格,验证数据然后将其映射到sql表。该过程是通过流读取器读取文件,验证数据,手动对excel电子表格进行更正,再次验证 - 重复此过程直到所有数据都经过验证。

如果excel电子表格是打开的,那么当我尝试通过流读取器读取数据时,我收到一个错误,“进程无法访问该文件......因为它正被另一个进程使用。”有没有办法删除锁或以其他方式将数据读入流读取器而无需每次都打开和关闭excel?

1 个答案:

答案 0 :(得分:2)

当您致电File.Open以获取流时,是否使用了允许您指定FileAccess的重载?

http://msdn.microsoft.com/en-us/library/y973b725.aspx

注意参数:

public static FileStream Open(
    string path,
    FileMode mode,
    FileAccess access,
    FileShare share
)

您可以将FileAccess.Read传递给第三个参数,表示您只需要只读访问权限。您还应该设置FileShare.Read以允许其他人以只读方式打开文件,而不是自己锁定它。请注意,如果MS Excel使用FileShare.None打开文件,您可能无法访问它。