我创建了一个文件,我希望该文件自动保存到用户的"下载"文件夹中。所以我用了:
StorageFile file = await DownloadsFolder.CreateFileAsync("filename.txt");
但是,如果我再次创建该文件,则会收到一条错误消息,指出该文件已存在。所以我用了:
StorageFile file = await DownloadsFolder.CreateFileAsync("filename.txt", CreationCollisionOption.ReplaceExisting);
但是,这也会导致错误崩溃,指出参数不在预期范围内。但是如果我使用:
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync("filename.txt", CreationCollisionOption.ReplaceExisting);
然后,即使文件存在,它也会创建文件,但我需要将文件创建/保存在"下载"文件夹中,以便用户更轻松地访问。我想到了这个(尝试的)解决方案,因为这里描述的问题阻止我向某些电子邮件客户端添加附件。
该方法CreateFileAsync (String)
使用 FailIfExists 选项作为默认值。因此,当您再次创建该文件时,您会收到一条错误消息,指出该文件已存在。
有关详细信息,请参阅创建碰撞选项。
DownloadsFolder.CreateFileAsync("filename.txt", CreationCollisionOption.ReplaceExisting)
方法崩溃,并显示错误,指出参数不在预期范围内。
由于应用只能访问它创建的"下载"文件夹中的文件,因此无法为此参数指定 OpenIfExists 或 ReplaceExists。
请参阅DownloadsFolder.CreateFileAsync(String, CreationCollisionOption)
文档的参数部分(最后一段)。
您可以使用DownloadsFolder.CreateFileAsync("filename.txt", CreationCollisionOption.GenerateUniqueName)
创建文件。如果文件或文件夹已存在,它可以自动将数字附加到指定名称的基数。
如果要覆盖下载文件夹中的现有文件。可以使用 FileSavePicker.PickSaveFileAsync
返回为表示保存的文件而创建的 storageFile 对象,并使用FileIO.WriteTextAsync(IStorageFile, String)
方法将文本写入指定的文件。它可以覆盖旧文件。
例如:
FileSavePicker savePicker = new FileSavePicker();
savePicker.SuggestedStartLocation = PickerLocationId.Downloads;
savePicker.FileTypeChoices.Add("Simple Line Files", new List<string>() { ".txt" });
savePicker.SuggestedFileName = "filename";
StorageFile file = await savePicker.PickSaveFileAsync();
if (file != null)
{
await FileIO.WriteTextAsync(file, "hello");
}