Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1550 | Anzahl registrierter User: 1841 | Besucher online: 75
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Text Resourcen aus Assembly auslesen


Autor: ThomasMentzel
Sprache: C#
Bewertung: 7,4
(1 Bewertung)
Anzahl der Aufrufe: 10023
  
Kick it on dotnet-kicks.de  

Beschreibung:

Klasse zum Auslesen von Textdateien aus einer Assembly. Zusätzlich kann eine Liste aller Resourcen abgefragt werden.

Abgelegt unter: Embedded, Eingebettet, Text, SQL, Resource, Ressource.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.IO;

namespace Softwareküche.Common
{
    /// <summary>
    /// Klasse zum Zugriff auf Resourcen innerhalb der DLL.
    /// </summary>
    internal static class ResourceReader
    {
        #region Konsturktor

        private static List<String> _resources;
        private static Assembly _assembly;

        /// <summary>
        /// Initialisieren der Liste mit den Resourcen
        /// </summary>
        static ResourceReader()
        {
            // Lesen und sortieren der Resourcen
            _resources = new List<String>();
            _assembly = Assembly.GetCallingAssembly();
            _resources.AddRange(_assembly.GetManifestResourceNames());
            _resources.Sort();
        }

        #endregion

        #region Eingebettete Resourcen auflisten

        /// <summary>
        /// Listet alle Resourcen mit dem angegebenen Filter zurück
        /// </summary>
        /// <param name="pattern">Muster, für das die Resourcen gefilter werden</param>
        /// <remarks>
        /// Unterstützte Filter:
        /// Exakte: foo
        /// EndsWith: *foo
        /// Starts With: foo*
        ///</remarks>
        public static string[] GetResourceList(string pattern)
        {
            if (String.IsNullOrEmpty(pattern)) return _resources.ToArray();

            string[] parts = pattern.Split(''*'');

            // Exakten String suchen
            if (parts.Length == 1)
            {
                foreach (string s in _resources)
                {
                    if (string.Compare(s, parts[0], false) == 0) return new string[] { s };
                }

                return (new List<String>()).ToArray();
            }
            // Anfang oder Ende ist gegeben *xxx oder yyy*
            else if (parts.Length == 2)
            {
                List<String> res = new List<string>();

                foreach (string s in _resources)
                {
                    if (s.StartsWith(parts[0]) && s.EndsWith(parts[1])) res.Add(s);
                }

                return res.ToArray();
            }
            else
            {
                throw new NotImplementedException("Mehr als ein ''*'' ist derzeit nicht implementiert");
            }
        }

        #endregion

        #region String Reader

        /// <summary>
        /// Liest einen Stream bis ans Ende aus und gibt die enthaltenen Daten zurück.
        /// </summary>
        /// <param name="stream">Der Stream, der bis zum Ende gelesen werden soll</param>
        /// <returns>Inhalt des Streams</returns>
        private static string ReadStreamToEnd(Stream stream)
        {
            try
            {
                byte[] data = new byte[(int)stream.Length];
                int size = stream.Read(data, 0, data.Length);

                return Encoding.Default.GetString(data, 0, size);
            }
            catch (Exception ex)
            {
                // Fehler mit einer eigenen Fehlerklasse kapseln
                throw new Exception("Fehler beim Auslesen der Resource in eine Zeichenkette", ex);
            }
        }

        /// <summary>
        /// Liste eine String Resource aus der Assembly aus
        /// </summary>
        /// <param name="resourceName">Name der Resource</param>
        public static string GetStringResource(string resourceName)
        {
            try
            {
                Stream stream = _assembly.GetManifestResourceStream(resourceName);
                return ReadStreamToEnd(stream);
            }
            catch (Exception ex)
            {
                // Vermeiden verschachtelter "Exceptions"
                throw new PException(ex.Message + Environment.NewLine + "Die Resource ''" + resourceName + "'' konnte nicht gelesen werden.", ex.InnerException);
            }
            catch (Exception ex)
            {
                // Exception geschachtelt neu werfen
                throw new Exception("Die Resource ''" + resourceName + "'' konnte nicht gelesen werden.", ex);
            }
        }

        #endregion
    }
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

ThomasMentzel schrieb am:  07.12.2008 08:10:37

Hier noch ein bißchen Code für den ResourceReader


string[] resList; // Liste aller Resourcen
resList = ResourceReader.GetResourceList("*.init.sql");

foreach (string res in resList)
{
string sql; // Inhalt der Resource (hier ein SQL Script)
sql = ResourceReader.GetStringResource(res);
DBBase.ExecuteProcedure(sql); // Ausführen des SQL
}


Diese Snippets könnten für Sie interessant sein:
[C#] Inhalt einer als Ressource eingebetteten Text-Datei ausgeben
[C#] Arraylist in Textdatei schreiben
[VB.NET] Text auf Bild zeichnen
[C#] Form-Überschrift zentrieren
[C#] Anzahl von Vorkommen eines Textes in einem anderen Text
[C#] Prozentual Textvergleichen
[C#] Fenstertitel im ColorDialog festlegen
[C#] Textdatei in List einlesen
[C#] Aeh-oh-meter
[C#] Aeh-oh-meter
[C#] Aeh-oh-meter
[C#] Aeh-oh-meter-Dialog
[VB.NET] Textdatei lesen und schreiben (String, StringArray, etc...)
[C#] Text2Bitmap (String in Bild umwandeln)
[C#] Zeilennummern zum Text hinzufügen
[C#] Alle E-Mail Adressen aus einem String bzw. Text filtern
[C#] Byte Größenangaben als String formatieren (KB, MB, GB, ...)
[C#] Textdatei einlesen auf verschiedene Arten
[C#] Text codieren
[C#] Text-to-Speech (Sprachausgabe)
[C#] Einfaches Text-Highlighting
[C#] String in einzelne Wörter aufteilen und Wörter zählen
[C#] Schutz vor SQL-Injektion
[C#] Größe einer SQL-Server Datenbank ermitteln
[VB.NET] Größe einer SQL-Server Datenbank ermitteln
[VB.NET] Einfache Ähnlichkeitssuche (SQL)
[VB.NET] SQL INSERT-Stringbuilder Function
[VB.NET] Mini-Sql-Command-Generator
[C#] CSV und XML-Datei Datenbank-Import (incl. valid-check)
[C#] T-SQL-Stored-Proc Generieren
[VB.NET] DataGridView Databinding mit LINQtoSQL
[VB.NET] Master-Detail Ansicht auf SQL Server-Daten mit LINQ-to-SQL
[C#] SQL Server Daten in Exel-Datei exportieren mit LINQ
[C#] Hole alle Datenbanken eines SQL Servers
[C#] SimpleDb
[C#] SqlDataSource.FilterExpression auf Bitflag filtern
[VB.NET] SQLCMD Parameter debuggen
[C#] Mit LINQ to SQL auf eine Datenbank zugreifen
[C#] Trivialer Datenbankzugriff
[C#] Fire-and-forget SQL-query (in 3 Zeilen)
[C#] Datenbankverbindung herstellen
[C#] Loads an embedded resource file of the calling assembly.
[VB.NET] ImageList dynamisch aus dem ResourceManager erstellen
[C#] Bilder aus *.resx Ressourcen Dateien in WPF verwenden

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.