创建文件夹时出现异常

时间:2016-06-02 14:51:24

标签: c# file uwp inkcanvas

我试图将一堆文件保存到文件夹中。该文件夹已存在,但我想完全删除它及其内容并将新文件保存到该文件夹​​中。我使用以下代码:

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)

请注意,我可以保存一次,它会正确替换文件夹。只有当我第二次尝试失败时才会这样做。它应该是在碰撞中替换现有项目,所以我怀疑我没有正确发布,但我不知道是什么。

1 个答案:

答案 0 :(得分:0)

啊我发现了!我用以下代码替换了流节省代码:

using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
    await containers[i].SaveAsync(stream);

它现在运作正常。

await stream.FlushAsync()替换stream.Dispose()似乎也可以解决问题。