gpt4 book ai didi

c# - DirectoryInfo.GetFiles() 是否返回当前正在写入/打开的文件?

转载 作者:行者123 更新时间:2023-11-30 15:12:17 24 4
gpt4 key购买 nike

我递归地搜索目录,我只需要确保如果文件打开或当前正在写入,它不会返回到文件列表中。

(这是一个 FTP 组件,如果文件已经打开写入,我不想发送它)

谢谢,凯文

最佳答案

是的,它将返回仍在使用的文件。它们仍在目录中,即使您当前无法打开它们。

测试代码证明:

using System;
using System.IO;
using System.Linq;

class Test
{
static void Main()
{
File.Delete("test.tmp");
// Prints false - the delete worked
Console.WriteLine(Directory.GetFiles(".")
.Any(x => x.EndsWith("\\test.tmp")));
using (Stream stream = File.Create("test.tmp"))
{
// Prints true, even though the stream is still open
Console.WriteLine(Directory.GetFiles(".")
.Any(x => x.EndsWith("\\test.tmp")));
}
}
}

正如 Will 所说,即使您可以这样做,也不能保证您在一秒钟后仍能打开该文件。文件系统检查将永远只是快照,除非您自己做一些事情来确保一致性 - 例如打开文件并保持打开状态。

关于c# - DirectoryInfo.GetFiles() 是否返回当前正在写入/打开的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1461201/

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