Fragensteller
Nach Datei im Programm suchen

Frage
Alle Antworten
-
Hi,
du kannst eine Textdatei als eingebettete Resource in einer Resourcendatei speichern und wieder abrufen:
1. Über dein Projekt neues Element hinzufügen "Resourcendatei", Name: FileResources.resx.
2. Doppelklick auf neue Datei FileResources.resx.
3. Als Resourcentyp Dateien auswählen und eine neue Resource hinzufügen -> auswahl vorhandenes Element
4. Deine Textdatei auswählen, Name: MeineTextdatei.txt
5. Im neuen Projektordner Resourcen mit rechter Maustaste auf deine Textdatei klicken
6. Im Eigenschaftenfenster bei Buildvorgang "Eingebettete Resource" auswählen
In deinem Code kannst du jetzt bequem auf deine Textdatei wie folgt zugreifen:
string text = FileResources.MeineTextdatei; Console.WriteLine(text);
Gruß
JohSu
- Bearbeitet JohSu Sonntag, 15. Juni 2014 01:43
-
Hallo,
eine andere Möglichkeit ohne Resourcendatei geht wie folgt:- Füge die Datei zum Projekt hinzu und STelle Buildvorgang auf eingebette Resource.
- Lese einen Text beispielsweise wie folgt aus:
using (var stream = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("WpfApplication161.TextFile1.txt")))//Namespace und Name der Datei { var msg = stream.ReadToEnd(); MessageBox.Show(msg); }
Um Beispielsweise die Bytes eines Bildes auszulesen kannst du direkt den von GetManifestResourceStream zurück gegebenen Stream verwenden.
Tom Lambert - C# MVP
Bitte bewertet- und markiert Beiträge als Antwort. Danke.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
Hallo Danke für die Infos,
ich will eigentlich die Textdatei oder zum Bsp. Worddatei als ganzes anzeigen, also bei betätigen des Buttons geht der Editor mit der Textdatei auf ...
Ich bilde natürlich voher eine neues Dokument usw, wie man das so macht, aber ich gebe anscheint einen falschen Pfad zur Datei an, und nach dem veröffentlichen liegt die Datei ja im Projekt und nicht unter C: die kann auch unter D: liegen zBsp.
Danke euch
-
Hallo,
du kannst keine Datei öffnen, die als Resource im Programm liegt. Diese musst du zuvor entpacken.Ich würde jedoch, wenn möglich, das Setup anweisen die Datei mit zu entpacken. Wenn du kein Setup verwendest, musst du die Datei entpacken und dann öffnen:
var path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"Hersteller\Programm\Documents");//Pfad wo die Datei hin gespeichert werden soll
if (!Directory.Exists(path))
Directory.CreateDirectory(path);//Ordner anlegen, falls nicht vorhanden
path = System.IO.Path.Combine(path, "Dok1.docx");//Dateinamen ergänzen
if (!File.Exists(path))//Datei existiert nicht, entpacken
{
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("WpfApplication162.Dok1.docx"))//Namespace und Name der Datei
{
using (var writer = File.OpenWrite(path))
{
while (stream.Position < stream.Length)
writer.WriteByte((byte)stream.ReadByte());//Byte für Byte schreiben
}
}
}
Process.Start(path);//Datei öffnen
Tom Lambert - C# MVP
Bitte bewertet- und markiert Beiträge als Antwort. Danke.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
Hallo,
ich habe es nicht ohne Grund in AppData abgelegt. Das Problem ist, das das Anwendungsverzeichnis i.d.R. schreibgeschützt ist. Darum laufen Setups auch unter Adminrechten.
Wenn die Datei in AppData abgelegt wird, hast du damit keine Probleme.Wenn du trotzdem das Verzeichnis des Programms nutzen willst:
var path = new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName
Tom Lambert - C# MVP
Bitte bewertet- und markiert Beiträge als Antwort. Danke.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
Mein Code entpackt nur eine Datei aus den Resourcen. Was du für eine Datei in den Resourcen hast, kann ich nicht wissen.
Wenn du eigentlich eine Word-Vorlage in den Resourcen haben willst, muss es eine dotx bzw. dot-Datei sein.Tom Lambert - C# MVP
Bitte bewertet- und markiert Beiträge als Antwort. Danke.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets