2012-04-05 28 views
0

我需要读取文本文件并将其存储到Db中。几次访问之后/读取文件时,突然出现该消息该进程无法访问该文件.NET

,因为它正在使用由另一个进程的进程无法访问该文件..

我已经检查过几次,但没有其他过程附加到它。这里是我的代码..

// Storing the data in a data table 
DataTable table = new DataTable(); 

table.Columns.Add(new DataColumn("L_Date", typeof(DateTime))); 
table.Columns.Add(new DataColumn("L_Time", typeof(TimeSpan))); 
table.Columns.Add(new DataColumn("L_CardID", typeof(string))); 
table.Columns.Add(new DataColumn("L_Status", typeof(string))); 
table.Columns.Add(new DataColumn("L_Type", typeof(string))); 
table.Columns.Add(new DataColumn("L_Catatan", typeof(string))); 

int i2 = 0; 
string[] content = System.IO.File.ReadAllLines(e.FullPath); 

foreach (string line in content) 
{ 
    // some code 
} 

我的代码人有什么问题?

+1

您是如何检查的?其他访问可能是暂时的 - 尝试使用Process Monitor来观察文件。 – Richard 2012-04-05 07:46:29

+1

您是否在另一个编辑器中打开该文件?像MSWord一样? – StuartLC 2012-04-05 07:48:29

+0

是的...我使用PM来检查它..没有其他进程附加.. – 2012-04-05 07:54:57

回答

0

而不是使用进程监视器(它监视访问文件时的实时活动),使用进程资源管理器(它可以显示所有文件,即使它们当前不被访问)。

去查找/查找句柄或DLL,搜索文件,双击它将选择后面的窗口中的句柄,然后你可以右键单击并关闭。

0

你可以试试:

FileStream stream = new FileStream("file.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 
StreamReader reader = new StreamReader(stream); 

它打开)由Word至少=锁定的文本文件,虽然你的问题的根源是未知然后= \

0

在多用户文件系统,当您调用关闭文件句柄的方法时,您的锁可能未被解锁。

稍后重试几毫秒。

+0

你是对的!当我重试几个毫秒后,在出现错误之前可以再次访问该文件几次......然后呢? – 2012-04-05 13:15:44

+0

然后你再试几次;)。把它包装在[策略](https://github.com/haf/Graphite.NET/blob/master/Graphite/Policy/TracingPolicy.cs)[例如](https://github.com/haf/Graphite .NET /斑点/主/石墨/ GraphiteTcpClient.cs#L35)。 – Henrik 2012-04-05 15:31:00

相关问题