写入临时文件并通过接口移动到 .ini 文件导致 C# 中的错误

Write temp file and move to .ini file via interface causes Error in C#

我有一个方法可以为我准备所有必要的数据,然后我使用一个界面:

myFileCreator.Create(myData.ToString(), PathToWriteMyFile, SomeMoreDataAsAList);

我的界面:

public interface IMyIniFileCreator
{
    void Create(string dataName, string dataPath, List<SomeModes> modeList);

    void Delete(string dataName, string dataPath);
}

这里需要注意的是CreateDelete方法之前是Task

所以

public interface IMyIniFileCreator
{
    Task Create(string dataName, string dataPath, List<SomeModes> modeList);

    Task Delete(string dataName, string dataPath);
}

Create() 如下所示,在这里应该可以正常工作:

public class MyIniFileCreator : ComponentBase,
                                IMyIniFileCreator
{
    public void Create(string dataName, string dataPath, List<SomeModes> modeList)
    {
        var pathToMode = Path.Combine(appDataPath, modeName + ".ini");
        var tempFile = Path.ChangeExtension(pathToMode, "tmp");

        var listOfSection = new List<IniSection>();
        
        // some more code with list of sections etc.
        
        var modeFileInfo = new IniDocument();
        modeFileInfo.AddRange(listOfSection);

        Check.State(tempFile.IsNotNullOrEmpty(), "modes.ini does not exist");

        File.WriteAllText(tempFile, SimpleIniParser.WriteSections(modeFileInfo), Encoding.Default);
        // This is needed when something changes in the file. 
        // Here the old ini must be deleted and the new one written. 
        // Unfortunately we do not have a `ForceMove` available.
        FileSystemHelper.DeleteFileIfExisting(pathToMode);
        FileSystemHelper.MoveDirectory(tempFile, pathToMode);
    }
}

代码也贯穿始终,我的modeName.ini文件也存在,并且已被完整正确地描述。 但是抛出错误

Unable to create directory 'C:\...\data\...3456789abc.ini'

这反过来又导致它在我的主要 class(第 1 行)中不再继续。这可能是什么原因,它仍然与界面中的 Task 一起工作(这里 Task.CompletedTask 返回 )并且它不适用于void 了,并且出现了这个奇怪的错误消息,尽管它一直运行并且存在 .ini 文件。

您正在呼叫 MoveDirectory,这是为了移动 目录

相反,您应该调用 File.Move() 来移动文件。