gpt4 book ai didi

C#:检查文件是否未锁定且可写

转载 作者:可可西里 更新时间:2023-11-01 08:27:13 27 4
gpt4 key购买 nike

我想在开始替换文件之前检查文件列表是否正在使用或不可写。当然,我知道从文件检查和文件复制开始,一个或多个文件可能会被其他人锁定,但我会处理这些异常(exception)情况。我想在文件复制之前运行此测试,因为完整的文件列表比操作过程中的文件无法替换更有可能成功。

你们中的任何一个有正确方向的例子或提示

最佳答案

无法保证您获得的列表在任何时候都不会在下一秒保持不变,因为在您返回时其他人可能会控制该文件。

不过我看到了一种方法 - 通过获取相应的 FileStream 对象来“锁定”要替换的文件。这样您就可以确保通过打开所有“可用”文件来锁定它们,然后您可以按照您想要的方式替换它们。

public void TestGivenFiles(List<string> listFiles)
{
List<FileStream> replaceAbleFileStreams = GetFileStreams(listFiles);


Console.WriteLine("files Received = " + replaceAbleFileStreams.Count);
foreach (FileStream fileStream in replaceAbleFileStreams)
{
// Replace the files the way you want to.
fileStream.Close();
}
}

public List<FileStream> GetFileStreams(List<string> listFilesToReplace)
{
List<FileStream> replaceableFiles = new List<FileStream>();
foreach (string sFileLocation in listFilesToReplace)
{
FileAttributes fileAttributes = File.GetAttributes(sFileLocation);
if ((fileAttributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly)
{ // Make sure that the file is NOT read-only
try
{
FileStream currentWriteableFile = File.OpenWrite(sFileLocation);
replaceableFiles.Add(currentWriteableFile);
}
catch
{
Console.WriteLine("Could not get Stream for '" + sFileLocation+ "'. Possibly in use");
}
}
}
return replaceableFiles;
}

也就是说,您最好尝试一个接一个地替换它们,而忽略那些您不能替换的。

关于C#:检查文件是否未锁定且可写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1175979/

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