Forum: PC-Programmierung C# Text aus Datei auslesen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Manna (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo ! Folgendes Problem:
Im  SytemOrdner 'C' gibt es den Order 'NeuerOrdner'
In beiden Ordnern liegt die gleiche Textdatei 'Textdatei'.Die Pfade zu 
den Ordnern für die Textdateien ist also:
                 string OrdnerPfad = @"C:\\";
        bzw.     string OrdnerPfad = @"C:\\NeuerOrdner\";
Die absoluten Pfade zu den Textdateien lauten also
                 string dateiPfad  = OrdnerPfad + "Textdatei.txt";
Schaue ich mir die Pfade auf der Konsole an also etwa :
          Console.WriteLine("Dateipfad: " + dateiPfad);
          ReadKey();
Dann ergibt sich in beiden Fällen richtigerweise:
        einmal        C:\\Textdatei.txt
         bzw.         C:\\NeuerOrdner\Textdatei.txt
Wenn ich jetzt aber einen Streamreader initialisieren will mit
               StreamReader sr = new StreamReader(dateiPfad);
,dann kann ich im ersten Fall die Textdatei problemlos auslesen,während 
im zweiten Fall (Textdatei im Ordner 'NeuerOrdner' ) eine Exception 
geworfen wird mit dem Text:
'Ein Teil des Pfades "C:\NeuerOrdner\Textdatei.txt" konnte nicht 
gefunden werden.'
Man achte auf den Single-Backslash nach 'C:' !!
Ich benutze Visual Studio 2015
Als Anfänger bin ich immer dankbar für konstruktive Hilfe

Gruss Manna

von René H. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich kenne C# nicht, aber ich tippe darauf, dass der Space Kummer macht.

Grüsse,
René

von Manna (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke Rene für die promte Antwort.
Als Anfänger verstehe nicht was du mit Space meinst
Gruss Manna

von Olaf B. (Firma: OBUP) (obrecht)


Bewertung
0 lesenswert
nicht lesenswert
Manna schrieb:
> bzw.     string OrdnerPfad = @"C:\\NeuerOrdner\";

Müsste das nicht
1
string OrdnerPfad = @"C:\NeuerOrdner\";

sein?

s. https://www.dotnetperls.com/path:
1
C# program that uses verbatim string
2
3
using System;
4
using System.IO;
5
6
class Program
7
{
8
    static void Main()
9
    {
10
  // ... Verbatim string syntax.
11
  string value = @"C:\directory\word.txt";
12
  Console.WriteLine(Path.GetFileName(value));
13
    }
14
}
15
16
Output
17
18
word.txt

mfg

Olaf

von Olaf B. (Firma: OBUP) (obrecht)


Bewertung
0 lesenswert
nicht lesenswert
Manna schrieb:
> Als Anfänger verstehe nicht was du mit Space meinst

Space == Blank == Leerzeichen == ' '

mfg

Olaf

von Manna (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Olaf ! auch Dir Dank, aber eine Änderung des Code's in deinem 
Sinne hat am Ergebniss nichts geändert
Gruss Manna

von René H. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Manna schrieb:
> Danke Rene für die promte Antwort.
> Als Anfänger verstehe nicht was du mit Space meinst
> Gruss Manna

Ich meine das Leerzeichen in "Neuer Ordner".

Grüsse,
René

von Manna (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Olaf ! die landläufige Bedeutung des Begriffs Space ist mir 
durchaus bekannt.Mir ist nur nicht klar in welchem Zusammenhang diese 
Bedeutung des Begriffs mit meinem Problem stehen würde und so nahm ich 
an,in diesem Falle wäre 'Space' ein spezieller mir nicht geläufiger 
'Terminus Technicus'.

von Olaf B. (Firma: OBUP) (obrecht)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Manna,

ich komme gerade an keine Win-Kiste & VS ran.

Workaround: in Verzeichnis mit auszulesender Datei wechseln & dann 
StreamReader mit Dateinamen initialisieren.

mfg

Olaf

von Manna (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Olaf !
Muss im Augenblick unser kleines 'Seminar' leider abbrechen(Pflichten!!) 
Werde mich wieder melden.
nochmals vielen Dank für deine Bemühungen und natürlich guten Rutsch und 
ein frohes neues Jahr
Gruss Manna

von Olaf B. (Firma: OBUP) (obrecht)


Bewertung
0 lesenswert
nicht lesenswert
Manna schrieb:
> die landläufige Bedeutung des Begriffs Space ist mir
> durchaus bekannt.

Hallo Manna,

war nicht abschätzig gemeint. Ich kenne Deine Kenntnisse im Bereich 
Programmierung & speziell Dot.NET nicht. Dieses FX ist nicht ohne - 
Riesen-Krake ;-))

mfg

Olaf

von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht lesenswert
Manna schrieb:
> string OrdnerPfad = @"C:\\NeuerOrdner\";

das ist definitiv falsch weil doppelt gemoppelt, wenn der @ vor dem 
String benutzt wird (verbatim string wie Olaf schon schrieb) dann werden 
zwei \ beibehalten und der Pfadname ist falsch. Also @ und einzelne \ 
oder kein @ und doppelte \ als Escape Zeichen. In dem Fall fehlte der 
zweite \ am Ende.
VS hat doch einen wunderbaren Debugger, warum nicht einfach mit F10 
durch das Programme steppen und sich die Stringinhalte ansehen?
1
            string OrdnerPfad2 = "C:\\NeuerOrdner\\";
2
            string OrdnerPfad3 = @"C:\NeuerOrdner\";
3
            string dateiPfad = OrdnerPfad2 + "Textdatei.txt";
4
            Console.WriteLine("Dateipfad: " + dateiPfad);
5
            StreamReader sr = new StreamReader(dateiPfad);
6
            Console.WriteLine(sr.ReadLine());
beide Varianten OrdnerPfad2/3 funktionieren bei mir.

: Bearbeitet durch User
von Stefan (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Johannes S. schrieb:
> das ist definitiv falsch weil doppelt gemoppelt

C:\Windows> cd ..\\\\windows\\\\\\system
C:\Windows\system>

Windows ist da extrem entspannt.

Stefan

von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht lesenswert
Stefan schrieb:
> Windows ist da extrem entspannt.

du hast Recht,
            string OrdnerPfad3 = @"C:\\NeuerOrdner\";
funktioniert auch.
Der Fehler ist nur nachvollziehbar wenn z.B. entweder "Neuer Ordner" mit 
Leerzeichen geschrieben wurde oder der Ordnername wirklich ein 
Leerzeichen enthält.

von OttosMops (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Manna schrieb:
> Hallo ! Folgendes Problem:
> 'Ein Teil des Pfades "C:\NeuerOrdner\Textdatei.txt" konnte nicht
> gefunden werden.'

Das passiert normalerweise, wenn der Pfad nicht vorhanden ist (bei 
fehlender Datei gibt es eine andere Message).
Bei mir funktionieren alle diese Varianten:

@"D:\Bilder\" + "bird.png";
@"D:\\Bilder\" + "bird.png";
@"D:\Bilder\\" + "bird.png";
@"D:/Bilder//" + "bird.png";
@"D:/Bilder/" + "bird.png";
@"D://Bilder/" + "bird.png";
@"D:/\Bilder/\" + "bird.png";
@"D:\/Bilder\/" + "bird.png";

von Manna (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Frohes neues Jahr an alle,die versucht haben mir bei meinem Problem zu 
helfen
Und im Nachhinein hat sich die simple Vermutunge von Rene als richtig 
herausgestellt,denn es war der 'Space' in 'Neuer Ordner',den ich einfach 
nicht gesehen hatte und der die Probleme verursachte!
Als Anfänger habe ich aber auch durch die Auseinandersetzung mit den 
anderen Beitägen einiges gelernt und dafür nocheinmal vielen Dank und 
Gruss an alle
Beteiligten

Manna

von René H. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi Manna,

auch Dir ein frohes neues :).


Manna schrieb:
> Und im Nachhinein hat sich die simple Vermutunge von Rene als richtig

Das freut mich zu hören.

Manna schrieb:
> nicht gesehen hatte und der die Probleme verursachte!
> Als Anfänger habe ich aber auch durch die Auseinandersetzung mit den
> anderen Beitägen einiges gelernt und dafür nocheinmal vielen Dank und
> Gruss an alle
> Beteiligten

Es wird oft unterschätzt wieviel man lernt bei der Fehlersuche.

Grüsse,
René

PS: leider geben die wenigsten Feedback was das Problem dann war, ich 
bedanke mich dafür. Es hilft denen die das Problem auch mal haben und 
hier suchen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.