web-dev-qa-db-fra.com

Lire un fichier texte à partir de ressources C #

J'ai besoin de lire un fichier depuis mes ressources et de l'ajouter à une liste . Mon code:

private void Form1_Load(object sender, EventArgs e)
{
    using (StreamReader r = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("myProg.myText.txt")))
    {
        //The Only Options Here Are BaseStream & CurrentEncoding
    }
}

J'ai cherché cela et n'ai obtenu que des réponses comme "Assembly.GetExecutingAssembly...." mais mon programme n'a pas l'option d'assemblage.?

18
Dobz

Essayez quelque chose comme ça: 

string resource_data = Properties.Resources.test;
List<string> words = resource_data.Split(new[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries).ToList();

Où 

enter image description here

32
PaRiMaL RaJ

Vous devez inclure using System.Reflection; dans votre en-tête pour pouvoir accéder à Assembly. Cela ne s'applique que lorsque vous marquez un fichier comme "ressource incorporée" dans VS.

var filename = "MyFile.txt"
System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNameSpace." + filename));

Tant que vous incluez 'using System.Reflection;' vous pouvez accéder à Assembly comme ceci:

Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace." + filename);

Ou si vous n'avez pas besoin de changer le nom de fichier, utilisez simplement:

Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace.MyFile.txt");

Le code complet devrait ressembler à ceci:

using(var reader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("myProg.m‌​yText.txt"))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        // Do some stuff here with your textfile
    }
}
8
Pete Garafano

Pour continuer, la solution AppDeveloper est la solution.

string resource_data = Properties.Resources.test;
string [] words = resource_data.Split(new[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries);
foreach(string lines in words){
.....
}
1
thaFaxGuy
        [TestCategory("THISISATEST")] 
        public void TestResourcesReacheability() 
        { 
            byte[] x = NAMESPACE.Properties.Resources.ExcelTestFile; 
            string fileTempLocation = Path.GetTempPath() + "temp.xls"; 
            System.IO.File.WriteAllBytes(fileTempLocation, x);   

            File.Copy(fileTempLocation, "D:\\new.xls"); 
        }

Vous obtenez le fichier de resouce sous forme de tableau d'octets, vous pouvez donc utiliser WriteAllBytes pour créer un nouveau fichier. Si vous ne savez pas où écrire le fichier (cause des autorisations et des accès), vous pouvez utiliser Path.GetTempPath () pour utiliser le dossier temporaire de l'ordinateur pour écrire le nouveau fichier, puis vous pouvez copier ou travailler à partir de là.

0
Danny Fallas