我试图将一堆文件保存到文件夹中。该文件夹已存在,但我想完全删除它及其内容并将新文件保存到该文件夹中。我使用以下代码:
Project project; //This is a parameter handed in when the method is called
List<InkStrokeContainer> containers; //This is a parameter handed in when the method is called
var projectFolder = await ApplicationData.Current.LocalFolder.GetFolderAsync(project.Id.ToString());
var slidesFolder = await projectFolder.CreateFolderAsync("Slides", CreationCollisionOption.ReplaceExisting);
StorageFile file;
IRandomAccessStream stream;
for (int i = 0; i < containers.Count; i++)
{
if (containers[i].GetStrokes().Count > 0)
{
file = await slidesFolder.CreateFileAsync($"{i.ToString()}.jpg", CreationCollisionOption.ReplaceExisting);
stream = await file.OpenAsync(FileAccessMode.ReadWrite);
await containers[i].SaveAsync(stream);
await stream.FlushAsync();
}
}
但是,我第二次尝试执行此操作时出现
当该文件已存在时无法创建文件。 (HRESULT异常:0x800700B7)
请注意,我可以保存一次,它会正确替换文件夹。只有当我第二次尝试失败时才会这样做。它应该是在碰撞中替换现有项目,所以我怀疑我没有正确发布,但我不知道是什么。
答案 0 :(得分:0)
啊我发现了!我用以下代码替换了流节省代码:
using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
await containers[i].SaveAsync(stream);
它现在运作正常。
用await stream.FlushAsync()
替换stream.Dispose()
似乎也可以解决问题。