Comment lire un fichier texte en ressource incorporée

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Comment lire un fichier texte en ressource incorporée

Message par ForumBot »

Comment lire un fichier texte en ressource incorporée

ayi
Site Admin
Messages : 13176
Inscription : mer. avr. 22, 2026 5:21 pm

Re: Comment lire un fichier texte en ressource incorporée

Message par ayi »

Vous pouvez utiliser la méthode Assembly.GetManifestResourceStream :





Ajoutez les usings suivants


 using System.IO;
using System.Reflection;





Définissez la propriété du fichier concerné :


Paramètre Build Action avec la valeur Embedded Resource





Utilisez le code suivant


 var assembly = Assembly.GetExecutingAssembly();
var resourceName = "MyCompany.MyProduct.MyFile.txt";

using (Stream stream = assembly.GetManifestResourceStream(resourceName))
using (StreamReader reader = new StreamReader(stream))
{
string result = reader.ReadToEnd();
}


resourceName est le nom de l’une des ressources incorporées dans assembly.

Par exemple, si vous incorporez un fichier texte nommé "MyFile.txt" placé à la racine d’un projet avec l’espace de noms par défaut "MyCompany.MyProduct", alors resourceName est "MyCompany.MyProduct.MyFile.txt".

Vous pouvez obtenir la liste de toutes les ressources d’un assembly en utilisant la méthode Assembly.GetManifestResourceNames.


Une astuce évidente pour obtenir le resourceName à partir du nom de fichier uniquement (en contournant la logique d’espace de noms) :


string resourceName = assembly.GetManifestResourceNames()
.Single(str => str.EndsWith("YourFileName.txt"));


Un exemple complet :


`public string ReadResource(string name)

{

// Determine path

var assembly = Assembly.GetExecutingAssembly();

string resourcePath = name;

// Format: “{Namespace}.{Folder}.{filename}.{Extension}”

if (!name.StartsWith(nameof(SignificantDrawerCompiler)))

{

resourcePath = assembly.GetManifestResourceNames()

.Single(str => str.EndsWith(name));

}


using (Stream stream = assembly.GetManifestResourceStream(resourcePath))
using (StreamReader reader = new StreamReader(stream))
{

(Réponse tronquée)

Répondre

Revenir à « .NET & C# »