Je reçois toujours l'erreur "Stream was not writable" chaque fois que j'essaie d'exécuter le code suivant. Je comprends qu'il y a toujours une référence au flux dans la mémoire, mais je ne sais pas comment résoudre le problème. Les deux blocs de code sont appelés dans un ordre séquentiel. Je pense que le second pourrait être un appel de fonction ou deux plus profonds dans la pile d'appels, mais je ne pense pas que cela devrait avoir de l'importance, puisque j'ai "utiliser" des instructions dans le premier bloc qui devraient nettoyer les flux automatiquement. Je suis sûr que cela est une tâche commune en C#, j'ai juste aucune idée de comment le faire ...Comment lire, puis écrire dans une ressource incorporée dans C#
string s = "";
using (Stream manifestResourceStream =
Assembly.GetExecutingAssembly().GetManifestResourceStream("Datafile.txt"))
{
using (StreamReader sr = new StreamReader(manifestResourceStream))
{
s = sr.ReadToEnd();
}
}
...
string s2 = "some text";
using (Stream manifestResourceStream =
Assembly.GetExecutingAssembly().GetManifestResourceStream("Datafile.txt"))
{
using (StreamWriter sw = new StreamWriter(manifestResourceStream))
{
sw.Write(s2);
}
}
Toute aide sera très appréciée. Merci!
Andrew
Uhm .. ce n'est pas tout à fait vrai. J'ai des applications semblent modifier les ressources embarquées. Qu'est-ce qu'ils ont fait, il a chargé l'exe dans un flux, puis l'encoder en ASCII. En faisant cela, vous remarquerez que votre fichier XML s'affichera. Donc ce qu'ils ont fait alors était de rechercher l'index du début du fichier XML et en quelque sorte remplacé les octets dans l'exécutable avec le nouveau fichier xml. Je ne sais pas comment ils l'ont fait et je ne pourrais pas le faire encore mais je sais que c'est possible. –