12

क्या यह संसाधन फ़ाइल से स्ट्रीम प्राप्त करने का सही/एकमात्र तरीका है?किसी संसाधन फ़ाइल/सामग्री से स्ट्रीम प्राप्त करना

Uri uri = new Uri(fullPath); 

    StorageFile storageFile = 
     await Windows.Storage.StorageFile. 
     GetFileFromApplicationUriAsync(uri); 

    IRandomAccessStreamWithContentType randomAccessStream = 
     await storageFile.OpenReadAsync(); 

    IInputStream resourceStream = (IInputStream) 
     randomAccessStream.GetInputStreamAt(0); 

मेरे सभी अन्य स्रोतों (http और स्थानीय भंडारण) एक स्ट्रीम वस्तु लौटने के लिए, और यह अगर-किसी और कोड एक या अन्य का उपयोग करता है करने के लिए दर्दनाक है।

मैंने इसे मेमोरीस्ट्रीम बनाने के लिए भी कोशिश की है, लेकिन मुझे बाइट्स प्राप्त करने का कोई तरीका भी नहीं मिल रहा है ... कृपया मदद करें।

uint size = (uint)randomAccessStream.Size; 
    IBuffer buffer = new Windows.Storage.Streams.Buffer(size); 
    await randomAccessStream.ReadAsync(buffer, size, 
     InputStreamOptions.None); 

    Stream stream = new MemoryStream(buffer); // error takes byte[] not IBuffer 

IInputStream.ReadAsync() जब संसाधन से पढ़ने: http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.streams.iinputstream.readasync.aspx

जबकि Stream.Read() और Stream.ReadAsync() इस तरह दिखेगा:

http://msdn.microsoft.com/en-us/library/system.io.stream.read.aspx

और

http://msdn.microsoft.com/en-us/library/hh137813.aspx

धन्यवाद

उत्तर

23

ठीक है मैंने इसे पाया!

StorageFile storageFile = 
     await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri); 

    var randomAccessStream = await storageFile.OpenReadAsync(); 
    Stream stream = randomAccessStream.AsStreamForRead(); 
+0

संभव है StorageFile को धारा परिवर्तित? : ओ – jdnichollsc

7

आप भी इसे एक कम लाइन में कर सकते हैं:

Stream stream = await storageFile.OpenStreamForReadAsync();