【发布时间】:2021-05-14 03:53:18
【问题描述】:
我有一个方法可以为我准备好所有必要的数据,然后我使用一个接口:
myFileCreator.Create(myData.ToString(), PathToWriteMyFile, SomeMoreDataAsAList);
我的界面:
public interface IMyIniFileCreator
{
void Create(string dataName, string dataPath, List<SomeModes> modeList);
void Delete(string dataName, string dataPath);
}
这里需要注意的是Create和Delete方法以前是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\...\123456789abc.ini'
这反过来又导致它在我的主要课程中没有进一步(第 1 行)。这可能是什么原因,它仍然可以与界面中的Task 一起使用(这里Task.CompletedTask 被返回)并且它不再与void 一起使用并且这个出现奇怪的错误消息,尽管它贯穿并且存在.ini 文件。
【问题讨论】:
-
请确保存储文件的目录存在,stackoverflow.com/questions/42143052/…