2012-05-22 8 views
6

मैं मेट्रो ऐप पर काम कर रहा हूं जो सूची दृश्य नियंत्रण में किसी दिए गए फ़ोल्डर की सामग्री दिखाता है। एमएस ने निर्णय लिया कि डेवलपर्स को System.IO.Directory क्लास की आवश्यकता नहीं है और इसे पूरी तरह से ढांचे से हटा दिया गया है।WinRT: पुस्तकालयों और ज्ञात फ़ोल्डर्स के बाहर फ़ाइलों को गिनाने के लिए ऐप

मैं मेट्रो स्टाइल ऐप में सी # में फ़ाइलों को गणना करने के लिए एक प्रतिस्थापन की तलाश में हूं। मैं सभी गणन एमएस द्वारा प्रदान के नमूने जाँच कर ली है और वे सब केवल तरह KnownFolders वर्ग, कुछ का उपयोग कर विंडोज पुस्तकालय की गणना करने में लग रहे हैं:

StorageFolder picturesFolder = KnownFolders.PicturesLibrary; 

और अपनी आवश्यकताओं पर निर्भर करता है GetFilesAsync() या GetFoldersAsync() तरीकों बुला। अगर मैं केवल चित्रों या संगीत पुस्तकालय के अंदर गिनना चाहता हूं तो ये सभी सोने हैं। हालांकि मैं उन निर्देशिकाओं पर फ़ाइलों की गणना करना चाहता हूं जो लाइब्रेरी में शामिल नहीं हैं।

कोई भी जानता है कि WinRT में यह कैसे संभव है ???

उत्तर

14

आप डिज़ाइन द्वारा, मेट्रो ऐप्स के लिए इस क्षेत्र में बेहद सीमित हैं। ,

  1. पहुँच स्थानीय भंडारण आपके आवेदन
  2. पहुँच अच्छी तरह से जाना जाता है के एक मुट्ठी भर के लिए विशिष्ट: विचार है कि मेट्रो एप्लिकेशन केवल उन चीजों है कि यह उपयोग करने के लिए विश्वसनीय है के लिए उपयोग दिया जाता है, तो आप या तो भंडारण स्थान, या
  3. एक विशेष रूप से दिए गए स्थान तक पहुंच।

http://msdn.microsoft.com/en-us/library/windows/apps/hh464959.aspx पर एक नज़र डालें ताकि आप यह जान सकें कि आप किस तक पहुंच पाएंगे।

+0

आह, यह वह पृष्ठ है जिसे मैं ढूंढ रहा था। मुझे मारो, +1 –

+1

इन दिनों, मैं dev.windows.com पर रहता हूं और सांस लेता हूं और design.windows.com – Robaticus

+0

धन्यवाद, यह सहायक था .. हालांकि यदि आप एक और चीज़ के साथ मेरी मदद कर सकते हैं ... मैं रखता हूं जब मैं स्टोरेजफ़ोल्डर के रूप में दस्तावेज़ लायब्रेरी प्राप्त करने का प्रयास करता हूं, तब तक एक्सेस अपवादों को अस्वीकार कर दिया जाता है, भले ही मैंने इसे ऐप्स मैनिफेस्ट क्षमता अनुभाग में चेक किया हो। कोई विचार??? हालांकि मैं बिना किसी समस्या के MusicLibrary तक पहुंच सकता हूं –

10
http://tirania.org/blog/archive/2011/Sep-15.html से

:

जब आप सी # और VB का उपयोग करें, आप पूर्ण नेट ढांचे का उपयोग कर रहे हैं। लेकिन वे डेवलपर्स करने के लिए एपीआई के एक छोटे सबसेट का पर्दाफाश करने के Windows 8

के लिए नई दृष्टि पुश करने के लिए चुना है और यह नई दृष्टि सुरक्षा/सैंडबॉक्स सिस्टम और अतुल्यकालिक प्रोग्रामिंग भी शामिल है। यही कारण है कि आपको प्रत्यक्ष फ़ाइल सिस्टम का उपयोग नहीं मिलता है या सॉकेट एक्सेस नहीं मिलता है और क्यों उपभोग करने के लिए सिंक्रोनस एपीआई का उपयोग नहीं किया जाता है।

अब, आप देखते हैं कि मैंने कहा "खुलासा" और "चला गया" नहीं।

उन्होंने क्या किया था कि जब आप मेट्रो प्रोफाइल को लक्षित करते हैं तो वे केवल एपीआई के संकलक के संपर्क में आते हैं। तो आपका आवेदन गलती से फ़ाइल को कॉल नहीं करेगा। उदाहरण के लिए बनाएं। रनटाइम पर, सीएलआर पूर्ण श्रेणी लाइब्रेरी लोड करेगा, जिसमें फ़ाइल शामिल है। आंतरिक रूप से, सीएलआर फ़ाइल जैसे कुछ कॉल कर सकता है। बनाएं, यह केवल आप ही इसका उपयोग नहीं करेंगे।

इस विभाजन क्या सिल्वरलाइट, जहां नहीं हर एपीआई अवगत कराया गया था के साथ अतीत में किया गया है के समान है, और जहां mscorlib है कि आपके आवेदन प्रणाली सुरक्षा सुनिश्चित करने नहीं था दिया अधिकार था।

आप सोच रहे होंगे कि आप कुछ चाल (GAC पुस्तकालय के बजाय संकलक संदर्भ संदर्भित या प्रतिबिंब का उपयोग निजी API, या पी/Win32 में लागू करने के लिए प्राप्त करने के लिए) का उपयोग कर सकते हैं। लेकिन उन सभी उपयोगों को ऐपस्टोर समीक्षा एप्लिकेशन द्वारा पकड़ा जाएगा और आप माइक्रोसॉफ्ट के स्टोर के माध्यम से अपने ऐप को प्रकाशित करने में सक्षम नहीं होंगे।

आप अभी भी अपने सिस्टम पर जो भी बदसूरत हैक कर सकते हैं। यह केवल ऐपस्टोर के माध्यम से प्रकाशित करना संभव नहीं होगा।

तो शायद कोई आधिकारिक तरीका नहीं है, और यदि कोई अनौपचारिक तरीका है, तो शायद यह ऐप स्टोर को स्वीकार नहीं किया जाएगा।

बस सामान्य रूप से यह समझ में आता है: मैं अपने हार्ड ड्राइव को स्कैन करने और अपनी "budget.xls" स्प्रेडशीट खोजने के लिए एक प्रतीत होता है कि कानूनी रूप से कानूनी एप्लिकेशन डाउनलोड नहीं करना चाहता, जिसमें मेरी बैंकिंग/क्रेडिट जानकारी शामिल है।

संपादित करें: WinRT के फ़ाइल पिकर के माध्यम से सुरक्षित फ़ाइलों/फ़ोल्डर्स को अस्थायी पहुंच प्रदान करना संभव है, लेकिन इसे उपयोगकर्ता द्वारा स्पष्ट रूप से बुलाया जाना चाहिए और चुना जाना चाहिए।

0

आप StorageFolder.GetFolderFromPathAsync पथ का उपयोग StorageFolder पथ से उदाहरण प्राप्त करने के लिए कर सकते हैं।

StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(@"C:\..."); 

ध्यान दें कि आपको अपनी मशीन पर सभी पथों के लिए ऐसा करने की अनुमति नहीं है।

+1

यह काम नहीं करता है, मेरा मतलब है कि आप ऑब्जेक्ट प्राप्त करते हैं, लेकिन एक बार जब आप इसे एक्सेस करते हैं और फ़ाइलों को गिनने के लिए इसका उपयोग करते हैं तो यह एक अपवाद को अस्वीकार कर देता है। इसे पूर्ण डेस्कटॉप पथ और गैर सिस्टम विभाजन पर कुछ अन्य पथों पर आज़माया, सभी ने एक ही परिणाम दिया –

0

इसी तरह की स्थिति। क्रोम बुकमार्क्स फ़ाइल को पार्स करने के लिए एक्सेस करना चाहता था। प्रारंभ में FileOpenPicker का उपयोग करना था, लेकिन बाद में पुनर्प्राप्ति के लिए भविष्य में पहुंचने वाली फ़ाइल को भविष्य में पुनर्प्राप्ति (?) में "कैश्ड" किया जा सकता है।

संबंधित मुद्दे