首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不允许访问文件夹

不允许访问文件夹
EN

Stack Overflow用户
提问于 2014-01-22 02:38:52
回答 1查看 177关注 0票数 0

我用VB编写了一个程序,其中电子邮件中的一些附件以编程方式存储在计算机中。

保存文件的过程如下:

  1. 创建一个临时文件夹并将附件保存在那里。"C:\tempFolder\attachment.fletyp“
  2. 对该文件进行分析,然后将其保存到相应的文件夹,如"C:\AnotherFolder\attachment.fletyp“。
  3. 保存文件后,它将根据邮件发送的时间设置文件的lastWriteTime属性。
  4. “C:\AnotherFolder的最后写时也被更改。
  5. 删除"C:\tempFolder“中的所有内容

有时候,效果很好。但是,有时错误突然发生,错误消息是:

进程无法访问文件"C:\AnotherFolder“,因为它正在被另一个进程使用。

请注意,程序无法访问的是文件夹,而不是文件。

我的猜测是,它首先发生在步骤3,当程序仍然在文件的最后写时间上“写入”,并且当步骤4发生时还没有被“释放”。

我在复制错误方面遇到了困难,因为“它就这样发生了”。

我的问题是如何判断文件夹本身是否还在进程中,等待它完成,然后再给它写一次?

编辑

通过测试产生相同错误的代码,我缩小了问题的范围。我不知道是否是这样,但我认为有90%的可能性是这样的。

代码语言:javascript
复制
For i As Integer = 0 To 500
    Try
        Directory.SetLastWriteTime("C:\anotherFolder", Date.Now)
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
    Console.WriteLine(i)
Next

在我的例子中,电子邮件有6个附件。(我刚到了500,这样就很容易发生异常了)。每次保存附件时,它都会将lastWriteTime写入其父文件夹。如果异常没有发生,请再次运行代码。

我该怎么处理呢?

EN

回答 1

Stack Overflow用户

发布于 2014-01-22 03:40:04

试着像这样

代码语言:javascript
复制
Dim path As String = "C:\anotherFolder" 

代码语言:javascript
复制
Directory.SetLastWriteTime(path, DateTime.Now)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21273142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档