Je travaille avec une composante 3ème partie qui retourne un objet IStream (System.Runtime.InteropServices.ComTypes.IStream). J'ai besoin de prendre les données dans ce IStream et l'écrire dans un fichier. J'ai réussi à faire cela, mais je ne suis pas vraiment content du code.Comment stocker un IStream dans un fichier via C#?
Avec « STRM » être mon IStream, voici mon code de test ...
// access the structure containing statistical info about the stream
System.Runtime.InteropServices.ComTypes.STATSTG stat;
strm.Stat(out stat, 0);
System.IntPtr myPtr = (IntPtr)0;
// get the "cbSize" member from the stat structure
// this is the size (in bytes) of our stream.
int strmSize = (int)stat.cbSize; // *** DANGEROUS *** (long to int cast)
byte[] strmInfo = new byte[strmSize];
strm.Read(strmInfo, strmSize, myPtr);
string outFile = @"c:\test.db3";
File.WriteAllBytes(outFile, strmInfo);
À tout le moins, je ne l'aime pas longtemps int CAST a commenté ci-dessus, mais je me demande s'il y a pas une meilleure façon d'obtenir la longueur du flux d'origine que ce qui précède? Je suis un peu nouveau à C#, donc merci pour les pointeurs.
vous a été plus rapide ... – Arthur
Rubens - merci pour le code ci-dessus de l'échantillon. Cela clarifie définitivement certaines choses pour moi. Malheureusement, je n'ai pas été en mesure de tester cela depuis que je l'ai posté, et ne le sera pas un peu plus longtemps. À ce moment-là, je vais soit accepter cette réponse, soit poster pour plus de précisions si nécessaire. –
okidoki, ty pour vos commentaires! –