2012-11-26 8 views
5

में कोई फ़ाइल मौजूद है या नहीं, यह जांचने के लिए कि विंडो 8 ऐप देव पर प्रयोगशाला बनाते समय। मैं आवश्यक सभी छवियों को लोड नहीं कर सका। इसलिए साझा करने के लिए शेयर हिस्से को साझा करने के लिए एक साझा करने की कल्पना के साथ काम करने के लिए मुझे यह जांचने की ज़रूरत है कि छवि फ़ाइल availeble है या नहीं। अगर मैं अपने window8 परियोजना में इस कोशिश परियोजना मैंविंडोस्टोर ऐप

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

इस्तेमाल किया XAML और सी # का उपयोग कर अतीत में एक खिड़कियों ग्रिड एप्लिकेशन है। फाइल क्लास नहीं मिला है।

मैं इंटरनेट पर खोज लेकिन एक कोड उदाहरण है कि सी # में एक WindowsStore अनुप्रयोग में अस्तित्व checkes

Michiel

उत्तर

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) "बजाय" लोकल स्टोरेज "- यह है कि एपीआई में बदलाव के बाद से इसका जवाब दिया गया था, या बस मेरा अपना गलतफहमी? –

+0

उपरोक्त कोड ठीक से काम करने के रूप में आपके हिस्से पर कुछ एपीआई बदलाव या कुछ गलतफहमी होना चाहिए। – Mayank

+1

@DawsonToth मुझे लगता है कि उन्होंने एपीआई को बदल दिया है और अब 'लोकल स्टोरेज' के बजाय 'लोकलफोल्डर' – 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

बेशक, 'विंडोज़। एप्लीकेशन मॉडेल.पैकेज.क्यूरेंट.इंस्टॉलेड लोकेशन' को आपके द्वारा देखी जाने वाली फ़ोल्डर के प्रासंगिक संदर्भ के साथ प्रतिस्थापित किया जा सकता है। – ZombieSheep