24391


掲題の通りです。

英語版で同様のスレッドがあったので、  
中学生以下の英語力で何とか解釈し、以下のコードを書きました。

[code]

            var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
            var result = localFolder.TryGetItemAsync("test.conf");
    
            if (result == null)
            {
                localFolder.CreateFileAsync("test.conf");
                return;
            }
    
[/code]

test.confなぞ無い状態で実行したのですが、括弧の中に入っていきません。  
すわ返却されるオブジェクトの中に結果でも格納されているのか？  
とデバッグして中をのぞいても、  
｢ネイティブビュー 式を評価できません｣  
と出てきて取っ掛かりすら掴めません。  
(TryGetItemAsyncはnull/nothingを返却すると聞いたのでわかりきった結果ですが)

結局ファイルの存在チェックはどのようにすればいいのか、  
何かご存じの方いらっしゃいましたら、お教えいただけると幸いです。


CC BY-SA 3.0
2016-04-27T12:38:55.740
24387
2017-06-29T23:51:44.967
14618
question
windows visual-studio windows-store-apps
Windows10+VS2015+UWPにおける、ファイルの存在チェックについて


`TryGetItemAsync`の戻り値は`IAsyncOperation<IStorageItem>`なので絶対に`null`にはなりません。  
`await`を追加してください。

[code]

    var result = await localFolder.TryGetItemAsync("test.conf");
    
[/code]


CC BY-SA 3.0
2016-04-27T13:10:40.963
24390
2016-04-27T13:10:40.963
5750
24387
answer


[StorageFolder.TryGetItemAsync()](https://msdn.microsoft.com/ja-
jp/library/windows/apps/windows.storage.storagefolder.trygetitemasync.aspx)のドキュメントにあるように戻り値は`IAsyncOperation<IStorageItem>`です。これに限らずUWPで使用できるライブラリのほとんどが`Async`すなわち非同期APIです。そのためまずは[C#での非同期APIの呼び出し](https://msdn.microsoft.com/ja-
jp/library/windows/apps/mt187337.aspx)を勉強してください。これが書けないことにはUWPプログラミングは不可能です。


CC BY-SA 3.0
2016-04-27T13:11:38.900
24391
2016-04-27T13:11:38.900
4236
24387
answer


> StorageFolder.TryGetItemAsync メソッドを使用して、名前によりファイルまたはフォルダーの取得を試みます。エラー キャッチ
> ロジックをコードに追加する必要はありません (StorageFolder.GetItemAsync
> を使用する場合と同様)。ファイルまたはフォルダーを見つけることができない場合、`TryGetItemAsync は null
> を返し、例外を発生させません。`このメソッドでは null
> が返されるため、指定のファイルまたはフォルダーが存在するかどうかを確認するために使用できます。

ファイルの存在確認にnullチェックは有効です。


CC BY-SA 3.0
2017-06-29T23:51:44.967
35980
2017-06-29T23:51:44.967
24118
24387
answer