maj*_*e27 10 .net c# windows directory system.io.directory
我正在尝试创建一个远程目录,然后将文件写入其中.每隔一段时间,在尝试编写文件时,应用程序会因System.IO.DirectoryNotFoundException而失败.
当我编写文件时,我正在使用返回的DirectoryInfo对象来帮助创建文件路径,因此应用程序似乎认为该目录已经创建.但是,该目录不存在.
在Windows完成创建之前,我是否有可能尝试写入目录?我认为Directory.CreateDirectory在此任务完成之前不会返回.
小智 8
答案 - 是的.当文件/目录创建滞后时的行为是预期的.其他评论者提出的普通解决方案是使用具有一些超时的重试.无论使用什么文件函数,行为都是相同的:Findfirst,CreateFile,WaitForSingleObject等.
另一个解决方案是使用在Vista和更高版本Windows操作系统上找到的API的新事务功能.
问题是令人讨厌的,开发人员从未理解在其他平台上制作的文件密集型项目并转移到Windows:如DOS/CMD脚本,SVN客户端,Cygwin,perl,各种Java应用程序,各种安装程序等.
我刚遇到这个问题,对我来说情况是这样的:
if(!exportDirectory.Exists)
exportDirectory.Create();
Run Code Online (Sandbox Code Playgroud)
然后在另一个传递给它的同一个 DirectoryInfo对象的类中,我做了一个:
if (!exportDirectory.Exists)
throw new DirectoryNotFoundException(exportDirectory.FullName);
Run Code Online (Sandbox Code Playgroud)
并且目录显然仍然不存在(虽然我在Windows中打开了父目录,当然我可以在我面前看到它).
我找到的解决方案是在初始创建我应该调用的目录之后:
exportDirectory.Refresh();
Run Code Online (Sandbox Code Playgroud)
来自微软:
刷新对象的状态.(继承自FileSystemInfo.)
归档时间: |
|
查看次数: |
2925 次 |
最近记录: |