2013-04-23 5 views
10

मैं एक्सएएमएल/सी # के साथ एक विंडोज 8 मेट्रो ऐप का निर्माण कर रहा हूं। मैं एक .xml एक धारा के साथ अपने डेटा संरचना फ़ाइल बचत कर रहा हूँ, इस तरह:मैं सी # में स्ट्रीम के साथ जेनरेट की गई फ़ाइल का नाम कैसे प्राप्त करूं?

XmlSerializer serializer = new XmlSerializer(typeof(MyObjectType)); 

using (var stream = await App.LocalStorage.OpenStreamForWriteAsync(MyObject.Title + ".xml", Windows.Storage.CreationCollisionOption.GenerateUniqueName)) 
    serializer.Serialize(stream, MyObject); 

कहाँ:

App.LocalStorage 

जाहिर

Windows.Storage.ApplicationData.Current.LocalFolder 

GenerateUniqueName करने के लिए सेट एक StorageFolder objecty है टकराव से बचने के लिए विकल्प सेट किया गया है, क्योंकि मेरी ऑब्जेक्ट्स का एक ही शीर्षक हो सकता है। अब, मुझे फ़ाइल स्ट्रीम को मेरी स्ट्रीम जेनरेट करने की आवश्यकता है, मैं इसे कैसे प्राप्त कर सकता हूं?

धन्यवाद

+3

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

+0

MyObject क्या है और MyObject.Title प्रॉपर्टी सेट कैसे है? – Abbas

उत्तर

10

पहले फ़ाइल बनाने का प्रयास करें।

var sourceFileName = MyObject.Title + ".xml"; 
StorageFile storageFile = await App.LocalStorage.CreateFileAsync(sourceFileName, Windows.Storage.CreationCollisionOption.GenerateUniqueName); 

using (var stream = await storageFile.OpenAsync(FileAccessMode.ReadWrite)) 
{ 
    serializer.Serialize(stream, MyObject); 
} 
2

OpenStreamForWriteAsync विधि आपको इस जानकारी तक पहुंचने का कोई आसान तरीका नहीं प्रतीत होता है। आप इसे किसी अन्य तरीके से एक्सेस करने के लिए स्विच कर सकते हैं:

StorageFile file = await App.LocalStorage.CreateFileAsync(...); 
using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite)) 
    // do stuff, file name is at file.Name 
संबंधित मुद्दे

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