VB.Net无法删除/终止从FTP站点下载的文件
我承认我在FTP方面是个新手。我试图从ftp站点下载一个文件,提取数据,然后删除它。以下是相关代码(我从某个论坛获得了函数,但此后一直无法找到): 它可以很好地下载文件,但在kill命令中出现以下错误:“访问路径'C:\temp.csv'被拒绝。”如果使用System.IO.file.Delete,则会出现相同的错误(有关异常详细信息,请参阅末尾的代码部分) 奇怪的是,我可以毫无问题地手动删除该文件。此外,如果我复制了文件,我可以杀死副本,但仍然不是原始文件。我不认为这是一个连接/发布问题,因为我也不能杀死几天前下载的文件&几台计算机重新启动。我知道这不是目录权限问题,因为我可以手动将文件移动到桌面,但仍然无法通过代码杀死它 我发现一些论坛帖子也有同样的问题,但没有帖子的答案。只是想澄清一下,我并没有试图从ftp站点删除该文件,而是在我的机器上删除下载的文件 我正在使用VisualStudio2008。提前谢谢 例外情况详情:VB.Net无法删除/终止从FTP站点下载的文件,vb.net,ftp,Vb.net,Ftp,我承认我在FTP方面是个新手。我试图从ftp站点下载一个文件,提取数据,然后删除它。以下是相关代码(我从某个论坛获得了函数,但此后一直无法找到): 它可以很好地下载文件,但在kill命令中出现以下错误:“访问路径'C:\temp.csv'被拒绝。”如果使用System.IO.file.Delete,则会出现相同的错误(有关异常详细信息,请参阅末尾的代码部分) 奇怪的是,我可以毫无问题地手动删除该文件。此外,如果我复制了文件,我可以杀死副本,但仍然不是原始文件。我不认为这是一个连接/发布问题,因为
System.UnauthorizedAccessException was unhandled
Message="Access to the path 'C:\temp.csv' is denied."
Source="Microsoft.VisualBasic"
StackTrace:
at Microsoft.VisualBasic.FileSystem.Kill(String PathName) at Project1.Module1.Main() at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()
InnerException:
使用AppData文件夹,问题应该会消失。您的应用不会自动拥有所有文件夹中所有文件的所有权
mUserFileDir = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) & _
YourFolderName & YourFileName
或者Environment.SpecialFolder.LocalApplicationData
,这取决于它正在做什么以及为谁做
也可以检查文件属性和任务。可能有问题。正如错误消息所示,您没有足够的权限写入c:\,这在现代版本的windows中是很正常的。尝试在某个地方创建一个新目录并将其写入其中。我应该澄清一下-我将路径缩短为C:\以使其更干净。但我知道标准权限不是问题所在,因为我可以杀死同一目录中的其他(非ftp源)文件。您使用过“Try catch and finally”吗?我在其他地方使用过它,但我不知道我可以在Catch或Finally部分中添加什么来帮助删除该文件。在新的dl之后,您是否查看了该文件的权限和属性?啊!它被标记为只读!我不知道这会使它,所以我可以手动删除它,但不是用代码。真奇怪。谢谢陛下如果答案是在注释中,那么标记答案的最佳方式是什么?我对答案进行了编辑,以包含属性…我本想在前面说,但忘了。
mUserFileDir = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) & _
YourFolderName & YourFileName