Forum: PC-Programmierung C# Text aus Datei auslesen


von Manna (Gast)


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)


Lesenswert?

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

Grüsse,
René

von Manna (Gast)


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)


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)


Lesenswert?

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

Space == Blank == Leerzeichen == ' '

mfg

Olaf

von Manna (Gast)


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)


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)


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)


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)


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)


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. (Gast)


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.

von Stefan (Gast)


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. (Gast)


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)


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)


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)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.