我在使用 FileSavePicker 时遇到问题。
我一直认为,当您选择现有文件的名称时,FileSavePicker 会替换文件。它甚至会询问“已经有一些具有该名称的文件,您要替换它吗?” 当你点击保存。
在我的程序的后续步骤中,我打开 StorageFile 并向其写入一个流。我的程序工作得很好,当新流比当前流长时,但会创建损坏的文件,当它更短时(当然在文件末尾留下一些不会被覆盖或删除的字节)。
所以我的问题是:如何执行 FileSavePicker 的替换机制?
FileSavePicker filePicker = new FileSavePicker();
filePicker.SuggestedFileName = "Some File Name";
filePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
filePicker.FileTypeChoices.Add("Pdf File", new List<string>(){ ".pdf" });
StorageFile saveFile = await filePicker.PickSaveFileAsync();
然后,我会将 SaveFile 作为参数提供给一个新类。这将使用 iTextSharp 创建一个 pdf 文档。
var stream = await saveFile.OpenAsync(FileAccessMode.ReadWrite);
doc = new Document();
writer = new PdfCopy(doc, stream.AsStream());
是的。当新文件大于以前的文件时,它可以正常工作。当您进入文件保存选择器时,选择一个文件并单击“保存”它甚至会询问您是否要替换文件,所以我想,它实际上会替换文件...:/
谢谢你的帮助!