调用GetPrivateProfileString命令后,我无法删除文件。我有以下代码:
'Read the INI File
sb = New StringBuilder(500)
Select Case FileType
Case "Scanner File"
res = GetPrivateProfileString("ScannerSetings", "ScannerType", "", sb, sb.Capacity, Filename)
Case "Scale File"
res = GetPrivateProfileString("ScaleSetings", "ScaleType", "", sb, sb.Capacity, Filename)
End Select
'If the result is a value store it, otherwise move it to unprocessed
If res <> 0 Then InputArray.Add(sb.ToString)
File.Delete(Filename)
从INI文件中读取详细信息后,一旦我尝试删除该文件,我就会收到以下错误:进程无法访问文件'R:\ Drop \ _ 011_11_Scanner',因为它正被另一个人使用过程
在我退出应用程序之前,我甚至无法手动删除这些文件。 任何帮助将不胜感激。
由于
答案 0 :(得分:0)
在我退出应用程序之前,我甚至无法手动删除这些文件。
这清楚地表明Filename
指向的文件已被锁定。只要它被锁定,您将无法删除它。
检查您的代码是否已打开任何文件句柄(例如用于写作目的)并且未关闭。
如果在打开文件后没有关闭文件,则文件不会被释放并保持锁定状态...这实际上意味着在(a)关闭文件句柄之前不能删除它,或者( b)你关闭你的程序,因为那是打开后持有文件句柄的东西。
修改强>
接下来要想到的是,VB.NET可能需要特殊的用户访问权限才能删除最新Windows版本上的INI。您只需使用提升的用户权限执行应用程序即可快速交叉检查(例如,通过右键单击菜单;以管理员身份运行)。我无法想象这实际上是问题 - 但它值得一试。如果确实存在问题,请检查(并修改)应用程序和/或INI所在文件夹的权限。