gpt4 book ai didi

c# - 将目录移动到另一个目录时是否可以访问文件?

转载 作者:太空宇宙 更新时间:2023-11-03 12:33:34 26 4
gpt4 key购买 nike

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

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

我已经尝试自己测试它并且它似乎没问题(它处理了我成功移动的文件)但我想在移动到生产设置之前验证这种情况。

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

最佳答案

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

f = 文件,c = 当前尝试,m = 最大尝试

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;
}

正在使用

var f = new FileInfo(@"C:/Current/Path/To/File.txt");
if (f.IsFileLocked(0, 50)) {
//The file is locked.
}

关于c# - 将目录移动到另一个目录时是否可以访问文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41847274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com