質問: await DownloadsFolder.CreateFileAsync(fileName, CreationCollisionOption.GenerateUniqueName); ``` ファイル名が重複したときには自動的に別名になるので良いのですが、その前にすでにファイルが存在するかをチェックして警告表示しようと思っています。 どのようにすれば DownloadsFolder でのファイル存在チェックができるのでしょうか? * ターゲット: UWP (Windows10, version 1809) * 開発環境: VisualStudio 2017 --- (2019-02-03 追記) System.IO.File.Exists() を使用した方法 ------------------------------- ApplicationData.Current.LocalFolder では成功しますが、DownloadsFolderは権限がないようで期待した結果になりません。 * DownloadsFolder のパスを取得する方法がない (CreateFileしてそのパスを得ることはできる) * DownloadsFolder では System.IO.File.Exists() が常に false を返す。 * DownloadsFolder では System.IO.Directory.GetFiles() はUnauthorizedAccessException例外になる DownloadsFolder は出力に特化したものということで、直接のファイル存在チェックは難しいように思えてきました。
回答: `CreationCollisionOption` パラメータに `GenerateUniqueName` の代りに `FailIfExists` を指定してみてはどうでしょう。 例外が発生したら、警告で選択肢表示し、選ばれた対処を行うとか。 CreationCollisionOption Enum > > Fields > > FailIfExists 2 > > ファイルまたはフォルダがすでに存在する場合はSystem.Exception型の例外を発生させます。 > > CreationCollisionOption列挙から明示的に値を渡さないメソッドは、ファイルまたはフォルダを > > 作成、名前変更、コピー、または移動しようとするときに、FailIfExists値をデフォルトとして > > 使用します。 > > >