Le IRandomAccessStream a une méthode appelée GetInputStreamAt http://msdn.microsoft.com/en-US/library/windows/apps/windows.storage.streams.irandomaccessstream
IInputStream inputStream = stream.GetInputStreamAt(0);
Cela vous obtient un IInputStream.
L'interface IInputStream définit une seule méthode, ReadAsync, qui vous permet de lire des octets dans un objet IBuffer. Windows.Storage.Stream inclut également une classe DataReader que vous créez en fonction d'un objet IInputStream, puis lisez de nombreux objets .NET du flux ainsi que des tableaux d'octets. http://www.charlespetzold.com/blog/2011/11/080203.html, http://msdn.microsoft.com/library/windows/apps/BR208119
using (var stream = new InMemoryRandomAccessStream())
{
// for example, render pdf page
var pdfPage = document.GetPage((uint)i);
await pdfPage.RenderToStreamAsync(stream);
// then, write page to file
using (var reader = new DataReader(stream))
{
await reader.LoadAsync((uint)stream.Size);
var buffer = new byte[(int)stream.Size];
reader.ReadBytes(buffer);
await Windows.Storage.FileIO.WriteBytesAsync(file, buffer);
}
}
maintenant vous avez un tampon contenant tous les octets lus.
vous pouvez maintenant enregistrer ce tampon dans un fichier http://blog.jerrynixon.com/2012/06/windows-8-how-to-read-files-in-winrt.html
var file = await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync("MyWav.wav", Windows.Storage.CreationCollisionOption.ReplaceExisting);
await Windows.Storage.FileIO.WriteBytesAsync(file, buffer);
Merci beaucoup, il est tard donc je vais essayer demain. l'indice avec getiputstremat et datareader semble très utile. – basilius
Merci beaucoup. Je vais essayer demain parce qu'il est tard. L'indice avec getinputstreamat et datareader semble très utile. Sur winrt system.io.filestream n'est pas disponible. Basilius – basilius
J'ai mis à jour ma réponse. Je pensais que vous utilisiez winrt une partie d'une application de bureau, vous n'étiez pas particulièrement spécifique;) –