2012-11-26 46 views
5

Windows 8上でラボを作っている間、私は必要なすべてのイメージを読み込むことができませんでした。ですから、共有部分を共有するためには、イメージファイルが利用可能かどうかを確認する必要があります。 プロジェクトは、私は私のwindow8プロジェクトでこれをしようとした場合、私はwindowsstore appにファイルが存在するかどうかを確認する方法

Using System.IO 
... lost of code 
privat void share() 
.... 
    if (File.exist(filename) 
    { 
     add file to share 
    } 

を使用XAMLを使用してWindowsグリッドアプリで、過去にはC# 。 Fileクラスが見つかりません。

私はインターネットを検索ができますが、StorageFileないFile

ここで必要ミシェル

答えて

13

をチェックし、する簡単な例であるC#で

をwindowsstoreアプリでexistanceをcheckesコード例を見つけることができませんでしたあなたが関数を書くことができます

StorageFile file; 
try { 
    file = await ApplicationData.Current.LocalFolder.GetFileAsync("foo.txt"); 
} 
catch (FileNotFoundException) { 
    file = null; 
} 

ファイルを取得

public static async Task<bool> FileExistsAsync(this StorageFolder folder, string fileName) 
{ 
    try 
    { 
     await folder.GetFileAsync(fileName); 
     return true; 
    } 
    catch (FileNotFoundException) 
    { 
     return false; 
    } 
} 
+0

それは([StorageFolder]」であることを表示されます"LocalStorage"の代わりにhttp://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.storagefolder) "これが答えられたので、APIの変更、または単に自分の誤解? –

+0

上記のコードがうまくいけば、いくつかのAPIの変更またはあなたの一部の誤解があります。 – Mayank

+1

@Dawson私は彼らがapiを変更したと思いますし、 'LocalStorage'の代わりに' LocalFolder'を使用します。 – Mayank

2

あなたのローカルストレージにパスを知って、あなたがチェックするファイルの束を持っている場合は、次の操作を行うことができます...

var sourceFolder = Windows.ApplicationModel.Package.Current.InstalledLocation; 
sourceFolder = await sourceFolder.GetFolderAsync("Assets"); 
var files = await sourceFolder.GetFilesAsync(); 
var requiredFiles = new List<String> { "ThisWorks.png", "NotHere.png" }; 
foreach(var filename in requiredFiles) 
{ 
    // your example logic here... 
    Debug.WriteLine(filename + " " + (files.Any(f => f.Name == filename) ? "Exists" : "Doesn't exist")); 
} 
+0

もちろん、 'Windows.ApplicationModel.Package.Current.InstalledLocation'はあなたが気にするフォルダへの関連するリファレンスに置き換えることができます。 – ZombieSheep

関連する問題