Ich möchte die erste Zeile einer Textdatei lesen, die ich dem Stammverzeichnis meines Projekts hinzugefügt habe. Das heißt, mein Lösungs-Explorer zeigt die TXT-Datei neben meinen CS-Dateien in meinem Projekt an.
Also habe ich versucht:
TextReader tr = new StreamReader(@"myfile.txt");
string myText = tr.ReadLine();
Dies funktioniert jedoch nicht, da es sich auf den Bin-Ordner bezieht und meine Datei nicht vorhanden ist. Wie kann ich dafür sorgen, dass dies funktioniert? : /
Vielen Dank
Antworten:
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf myfile.txt und wählen Sie "Eigenschaften".
Stellen Sie von dort aus
Build Action
aufcontent
undCopy to Output Directory
auf entwederCopy always
oder einCopy if newer
quelle
Embedded Resource
und lesen Sie den Artikel über das Lesen von eingebetteten Ressourcen blogs.msdn.com/b/nikola/archive/2008/05/14/…Sie können Folgendes verwenden, um das Stammverzeichnis eines Website-Projekts abzurufen:
Oder Sie können das Basisverzeichnis wie folgt abrufen:
quelle
Fügen Sie Ihrem Projekt eine Ressourcendatei hinzu (Klicken Sie mit der rechten Maustaste auf Projekt-> Eigenschaften-> Ressourcen). Wo "Strings" steht, können Sie zu "Dateien" wechseln. Wählen Sie "Ressource hinzufügen" und wählen Sie Ihre Datei aus.
Sie können jetzt über die
Properties.Resources
Sammlung auf Ihre Datei verweisen .quelle
Die obige Methode bringt Ihnen ungefähr Folgendes:
Von hier aus können Sie mit System.IO.Directory.GetParent rückwärts navigieren:
1 Mal gelangen Sie zu \ bin, 2 Mal gelangen Sie zu \ myProjectNamespace. Es wäre also so:
Nun haben Sie so etwas wie "C: \ Benutzer \ myuser \ Dokumente \ Visual Studio 2015 \ Projekte \ myProjectNamespace". Fügen Sie also einfach den endgültigen Pfad zu Ihrem Dateinamen hinzu, zum Beispiel:
Ich hoffe es hilft.
quelle
Sie können es auch einbetten lassen (Build-Aktion auf setzen
Resource
). So rufen Sie es von dort ab:(Ein Code aus dieser Antwort von Charles )
quelle
In diesem Fall müssen Sie den absoluten Pfad verwenden. Aber wenn Sie das einstellen
CopyToOutputDirectory = CopyAlways
, wird es so funktionieren, wie Sie es tun.quelle
In diesem Code greifen Sie auf das
root
Verzeichnisprojekt zu:dann:
quelle