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());
そうそう。新しいファイルが以前のファイルよりも大きい場合は問題なく動作します。ファイル保存ピッカーに到達すると、ファイルを選択して「保存」をクリックすると、ファイルを置き換えるかどうかを尋ねられるので、実際にファイルを置き換えると思いました... :/
ご協力いただきありがとうございます!