首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将文件目录移动到不同的目录时,文件是否可访问?

将文件目录移动到不同的目录时,文件是否可访问?
EN

Stack Overflow用户
提问于 2017-01-25 17:01:28
回答 1查看 40关注 0票数 2

我在某个位置有一个视频文件夹,比如C:\Temp。

我将整个目录连同其内容一起移动到“正在处理”文件夹中,同时我有一个从“正在处理”文件夹中读取移动的目录的爬虫,我担心在极端情况下,爬虫可能会尝试从尚未完整复制的目录中读取。

我试着自己测试它,它似乎还可以(它成功地处理了我移动的文件),但我想在进入生产设置之前验证一下这种情况。

TLDR;我在一个文件夹中有两个视频,我将它们移动到不同的位置,同时尝试使用另一个线程从该目录读取,是否可能其他线程将能够访问该目录,即使复制尚未“完成”?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-25 17:08:52

我看不出你为什么不能访问一个文件夹,而那个目录中的文件正在被移动(权限...)。如果你在一个文件夹中爬行,遇到一个由于被另一个程序复制/打开而被锁定的文件,我使用下面的扩展方法来管理它。

F=文件,c=当前尝试,m=最大尝试次数

代码语言:javascript
运行
复制
public static bool IsFileLocked(this FileInfo f, int c, int m)
{
    if (c > m) { return true; }
    FileStream fs = null;
    try
    {
        fs = f.Open(FileMode.Open, FileAccess.Read, FileShare.None);
    }
    catch (IOException)
    {
        Thread.Sleep(500);
        return IsFileLocked(f, c + 1, m);
    }
    finally
    {
        fs?.Close();
    }
    return false;
}

在使用中

代码语言:javascript
运行
复制
var f = new FileInfo(@"C:/Current/Path/To/File.txt");
if (f.IsFileLocked(0, 50)) {
       //The file is locked.                 
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41847274

复制
相关文章

相似问题

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