2012-11-26 122 views
5

在窗口8應用程序開發中製作實驗室時。我無法加載所需的所有圖像。因此,爲了讓共享部分與共享圖像一起工作,我需要檢查圖像文件是否可用。 該項目使用XAML和C# 在過去的一個窗口網格軟件,我用如何檢查Windowsstore應用程序中是否存在文件

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

如果我嘗試這在我在WindOW8項目。沒有找到File類。

我在網上搜索,但未能找到checkes的所有腦幹在C#中的windowsstore應用

米希爾

回答

13

你需要StorageFile一個代碼示例不File

這裏是簡單的例子來檢查和獲取文件

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]( http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.storagefolder)「而不是」LocalStorage「 - 是API的改變,因爲這是被回答的,或者只是我自己的誤解? –

+0

因爲上面的代碼工作正常,所以必須進行一些API更改或者一些誤解。 – Mayank

+1

@DawsonToth我猜他們改變了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

相關問題