2015-01-09 32 views
0

我在C#中创建文件从InputStreams并将它们写入公共共享文件夹。在我设置了LastWriteTime属性之前,我不能让其他人阅读文件。我使用下面的代码:可能出现创建在设置最后一次写入时间时锁定的新文件

// Write file to disk 
using (var fileStream = File.Create(fileName)) 
{ 
    webStream.CopyTo(fileStream); 
} 
File.SetLastWriteTimeUtc(path, timestamp); 

一种情形别人读取文件File.SetLastWriteTimeUtc()被调用之前。我如何防止这种情况?

回答

1

你必须创建FILESTREAM时设置正确的共享选项:

using (var fileStream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite, FileShare.None) 

你的最后一个指令也应该是 using语句,作为该文件被关闭时的使用外担保它。

+0

当我在使用块内设置File.SetLastWriteTimeUtc()语句时,我得到一个IOException:“进程无法访问文件'C:\ test \ myfile.csv',因为它正在被另一个进程使用。 。我现在将文件保存到本地磁盘,因此除了运行我的代码的其他进程之外,没有其他进程可以使用它。 –

+0

出于好奇,为什么你明确地设置最后写入时间属性? –

+0

我从远程网站抓取文件,他们最后修改的日期稍后在单独的服务中用于确定哪个文件应该首先处理。 –

相关问题