文件使用错误

阿什坎·莫巴宁·基阿巴尼

这段代码是我Form_Load方法中的第一个代码

DirectoryInfo dir =new DirectoryInfo("d:\\themes.thumb");

string[] animals = new string []
{
    "Snakes",
    "SnowyOwls",
    "Tigers",
    "TropicalFish",
    "WildBeauty",
    "Wolves"
};

foreach (FileInfo fil in dir.GetFiles())
{
    for(int ii=0;ii<animals.Length;ii++)
    {
        if (fil.Name.StartsWith(animals[ii]))
        {
        try
        {
            fil.Replace(fil.FullName,fil.FullName.Replace(fil.Name,"Animals-" + fil.Name));
        }
        catch
        {
        }
    }
}

每当出现if (fil.Name.StartsWith(animals[ii]))true时,我都会收到以下错误

该进程无法访问该文件,因为该文件正在被另一个进程使用。

我在此代码之前未打开任何文件,这是怎么回事?

敦促

您应该将读取逻辑与更新逻辑分开。

例如:

var replacements = dir.GetFiles()
                      .Where(file => animals.Any(animal => file.Name.StartsWith(animal)))
                      .Select(file => new 
                                     {
                                       OldFullName = file.FullName, 
                                       NewFullName = file.FullName.Replace(file.Name, "Animals-" + file.Name) 
                                     })
                      .ToList();

foreach (var replacement in replacements)
{
    File.Move(replacement.OldFullName, replacement.NewFullName);
}

您的替换逻辑有一些细微的错误(例如,在名为“ Wolves”的文件夹中的文件会发生什么?),您可能想解决这个问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章