2017-10-28 2 views
1


Ich versuche den Inhalt einer Datei zu öffnen und anzuzeigen. Der Dateipfad wird mit dem Windows-Explorer-Dialogfeld erstellt. Er wird in einem Text File_Path_TB abgelegt und hat das Format C:\Users\User\Desktop\testDoc.txt. Ich möchte diesen Dateipfad unter File_Path_TB verwenden, um den Inhalt des Dokuments zu öffnen und anzuzeigen.
Der gewünschte Ausgabe-String lautet wie folgt @"C:\Users\User\Desktop\testDoc.txt".
Mein Code ist wie folgt

Anfügen von Sonderzeichen an Dateipfad

private void Load_File_Contents_BTN_Click(object sender, RoutedEventArgs e) 
{ 
     string FilePath = File_Path_TB.ToString(); 
     string File_Contents = File.ReadAllText(FilePath); 
     MessageBox.Show(File_Contents); 
} 

Ich habe versucht, die folgenden;
string File_Contents = File.ReadAllText("@"" + filepath + """);

irgendwelche Vorschläge und Hilfe würden geschätzt werden!

+1

einfach 'Datei. ReadAllText (Datei_Pfad_TB) '? Wenn das fehlschlägt, beschreiben Sie bitte, was passiert. Das '@" "' ist nur für Sie, wenn Sie Ihre Strings in Ihrem eigenen Code schreiben, Sie nie eine Variable damit dekorieren, Schrägstriche, die bereits innerhalb einer Variablen sind, sind in Ordnung. –

Antwort

1

Dies ist, was ReadAllText Bedürfnisse:

C:\Users\User\Desktop\testDoc.txt 

nicht

@"C:\Users\User\Desktop\testDoc.txt" 

Die Dekorationen @" und " zum C# Syntax gehören und umschließen Verbatim-Strings. Sie sind nicht Teil des Zeichenfolgenwerts, sondern nur Trennzeichen! filepath enthält bereits den richtigen Wert. Füge nichts hinzu.

string FilePath = File_Path_TB.Text; 
string File_Contents = File.ReadAllText(FilePath); 
... 

Alles, was Sie tun müssen.


Wenn Sie den Pfad als String-Konstante in C# zuweisen möchten, dann haben Sie

string FilePath = @"C:\Users\User\Desktop\testDoc.txt"; 

Der Inhalt FilePath zu schreiben, nachdem diese assignement

ist
C:\Users\User\Desktop\testDoc.txt 
+0

Toll, das ist gut zu wissen, dass bei Verwendung eines Strings als Dateipfad das '@" .. "' nicht benötigt wird. Danke für die Antwort. – bdg

1

verwenden

string FilePath = File_Path_TB.Text; 

Um die Text-Eigenschaft des TextBox zugreifen.

So könnte man Code sein:

private void Load_File_Contents_BTN_Click(object sender, RoutedEventArgs e) 
{ 
     string FilePath = File_Path_TB.Text; 
     string File_Contents = File.ReadAllText(FilePath); 
     MessageBox.Show(File_Contents); 
} 
+1

Es funktioniert. Aber kann vereinfacht werden, ich habe das nicht bemerkt, ich wollte nur zeigen, dass er auf die Text-Eigenschaft zugreifen wollte, nicht auf die ToString-Methode des TextBox-Objekts. Ich habe meine Antwort bearbeitet. – Tony

+1

_ "Es funktioniert. Aber kann vereinfacht werden" _ - sehr wahr. Downvote entfernt und +1 an Ort und Stelle :) – MickyD