Ausgabe einer Textdatei



  • Ich soll den Text einer Datei in der Konsole ausgeben, bekomme das jedoch nicht so ganz hin:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    
    namespace Dateiausgabe
    {
        class Program
        {
            static string Main(string[] args)
            {
                StreamReader rd;
                rd = new StreamReader ("d:\\xxx\\Dateiausgabe.txt", Encoding.UTF8);
    
                string line;
    
                line = rd.ReadLine();
    
                Console.ReadLine();
            }
    
        }
    }
    

    Kann mir jemand eventuell helfen?





    1. warum hast du die main mit dem rückgabetyp "string" erstellt ?
    2. Du schreibst doch nirgends in die Konsole. Da musst du z.b. "Console.WriteLine" verwenden


  • @Firefighter: Nachdem ich genau 1:34 std. im Internet gesucht habe und auschließlich Beiträge gefunden habe, wie ich einen Text auslese, aber nicht, wie ich ihn dann auch ausgebe, habe ich dieses Forum bemüht.

    @DarkShadow44: Danke für die weiterbringenden Fragen 👍
    Gerade die zweite deiner Fragen hat mich drauf gestoßen, dass ich das Einfügen in die Konsole total vergessen hatte, was ich dann aber nachgeholt habe. Mit einigen Ausbesserungen habe ich es dann auch geschafft:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    
    class Dateiausgabe
    {
        public static void Main()
        {
            StreamReader rd = new StreamReader("d:\\heinemann\\Dateiausgabe.txt");
            String line;
    
            while ((line = rd.ReadLine()) != null)
            {
                Console.WriteLine(line);
            }
            Console.ReadLine();
    
            rd.Close();
        }
    }
    

    Nun soll ich das ganze weiterführend nochmal machen, aber mit umgedrehter Ausgabe des Textes unter Verwendung folgendes Grundschemas:

    -open
    -while
    ADD
    -close
    -for
    Ausgabe

    Mein Versuch sieht bisher so aus und funktioniert ohne Fehlermeldungen. Jedoch erhalte ich auch keinen Text in der Console und weiß nicht genau, wo ich was vergessen habe?

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    
    class Dateiausgabe
    {
        public static void Main()
        {
            List <string> zeilen;
            zeilen = new List<string>();
    
            StreamReader rd = new StreamReader("d:\\heinemann\\Dateiausgabe.txt");
            String line;
    
            while ((line = rd.ReadLine()) != null)
            {
                zeilen.Add("line");
            }
    
            for (int i=zeilen.Count; i>0; i--)
            {
                Console.WriteLine(line); 
            }
    
            Console.ReadLine();
    
            rd.Close();
        }
    }
    

    Grundgedanke meinerseits war es, die for Schleife so zu gestalten, dass sie die Anzahl der Zeilen zählt und mit dem Wert als start beginnt und von da an rückwerts zählend jede Zeile der Reihe nach ausgibt. Oder liegt der Fehler woanders?



  • Es gibt auch File.ReadAllLines()

    for (int i=(zeilen.Count-1); i>=0; i--)
    {
        Console.WriteLine(zeilen[i]);
    }
    


  • boenz666 schrieb:

    @Firefighter: Nachdem ich genau 1:34 std. im Internet gesucht habe und auschließlich Beiträge gefunden habe, wie ich einen Text auslese, aber nicht, wie ich ihn dann auch ausgebe, habe ich dieses Forum bemüht.

    Hmm, dann bist du Unfähig korrekt zu suchen, sorry wenn ich das so hart sage, aber zu diesem Thema gibt es einfach zu viel im Internet. Und wenn man seinen Kopf anstrengt und mal überlegt was man mit dem ausgelesenen String wohl am günstigsten anfangen will, wenn man ihn auf der CONSOLE ausgeben will, dann käme man sicherlich auch ohne Hilfe darauf das man Console.WriteLine anwenden muss.

    Dennoch kleiner Tip:
    Schau dir mal die Klasse File und speziell ihrer Methode File.ReadAllLines an. Wenn du diese Methode anwendest, bekommst du alle Zeilen aus der Datei in einem String-Array zurückgeliefert.

    Weiterhin schau dir bitte den using-Block an, dann weißt du wie man richtig mit IDisposable Klasse umgeht



  • Ach wieso hart? Ist doch deine ehrliche Meinung und ich akzeptiere die so und es mag auch sein, dass sie definitv einen Funken Wahrheit enthält. Dass man Console.write benutzt musst eich allerdings nicht im Netz raussuchen, ich habe das wie geschrieben nur vergessen, hatte den Quellcode aktualisert und vergessen neu in der Ablage zu speichern. Das was eigentlich gehakt hat war der Name meines Funktionskopfes und das kann man nicht im Internet durch Suchen rausfinden, da er ja fehlerhaft war uns somit zu keinem Ergebnis führen kann.

    Für deine weiterführende Antwort danke ich dir definitv, da hast du dir echt Mühe gegeben. LEider ist es so, dass ich die angewendeten Methoden using und File.ReadAllLines nicht verwenden darf, da meinen Ausbilder ersteres nicht zusagt und zweiteres noch nicht bekannt ist und nur bereits erworbene Erkenntnisse verwendet werden dürfen. Trotzdessen danke ich dir, weil ich in eigener Arbeit eventuell schonmal eine Vorschau für mich selber liefern kann und mich im Voraus schonmal mit der Materie vertraut machen kann 🙂


  • Administrator

    Firefighter schrieb:

    Schau dir mal die Klasse File und speziell ihrer Methode File.ReadAllLines an. Wenn du diese Methode anwendest, bekommst du alle Zeilen aus der Datei in einem String-Array zurückgeliefert.

    Weiterhin schau dir bitte den using-Block an, dann weißt du wie man richtig mit IDisposable Klasse umgeht

    *applaudiert* Ist doch wirklich nicht viel mehr Aufwand? 😃
    Cross-Thread-Kontext: http://www.c-plusplus.net/forum/p2097769#2097769

    Grüssli



  • um mal kurz deinen code zu kommentieren (kleiner tipp: im debugger solltest du das alles sehen ;)):

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    
    class Dateiausgabe
    {
        public static void Main()
        {
            List <string> zeilen;
            zeilen = new List<string>();
    
            StreamReader rd = new StreamReader("d:\\heinemann\\Dateiausgabe.txt");
            String line;
    
            while ((line = rd.ReadLine()) != null)
            {
                zeilen.Add("line");  // diese anführungszeichen würde ich weglassen...
            } // wenn die schleife beendet ist hat die variable "line" den wert "null"
    
            for (int i=zeilen.Count; i>0; i--) //statt "zeilen.Count" "zeilen.Count-1" und statt "i>0" "i>=0"
            {
                Console.WriteLine(line); // und hier wäre "zeilen[i]" besser statt "line", "line" ist immer gleich: enthält den wert "null", drum siehst du auch nix
            }
    
            Console.ReadLine();
    
            rd.Close();
        }
    }
    


  • Dravere schrieb:

    Firefighter schrieb:

    Schau dir mal die Klasse File und speziell ihrer Methode File.ReadAllLines an. Wenn du diese Methode anwendest, bekommst du alle Zeilen aus der Datei in einem String-Array zurückgeliefert.

    Weiterhin schau dir bitte den using-Block an, dann weißt du wie man richtig mit IDisposable Klasse umgeht

    *applaudiert* Ist doch wirklich nicht viel mehr Aufwand? 😃
    Cross-Thread-Kontext: http://www.c-plusplus.net/forum/p2097769#2097769

    Grüssli

    😃 😃

    @boenz666: Hmm ok, wenn deiner Ausbilder damit so ein Problem hat, dann musst du es natürlich anders lösen.

    An deinem vorletzten Code kann ich jetzt nichts Fehlerhaftes entdecken.

    Bezüglich der erworbenen Kenntnisse: Warum klassifizierst du dein Wissen, mit welchem du das Problem löst, nicht einfach als neu erworbene Kenntnisse :D. Du sagst deinem Ausbilder einfach du hast dir Lösung durch lesen im Internet angeeignet. Oder darfst eigentlich gar nicht im Internet nachfragen? 😃



  • Firefighter schrieb:

    An deinem vorletzten Code kann ich jetzt nichts Fehlerhaftes entdecken.

    Also scheinbar ist es nicht korrekt, wie die Ausgabe erfolgt. Habe die Anführungsstriche auch mal weggenommen, aber dabei kam nichts raus. Muss ich mal morgen nachfragen, leider ist er nämlich nicht da.

    Firefighter schrieb:

    Bezüglich der erworbenen Kenntnisse: Warum klassifizierst du dein Wissen, mit welchem du das Problem löst, nicht einfach als neu erworbene Kenntnisse :D. Du sagst deinem Ausbilder einfach du hast dir Lösung durch lesen im Internet angeeignet. Oder darfst eigentlich gar nicht im Internet nachfragen? 😃

    😃 Also beim vorangegangenen Problem hatte ich das gemacht und da fragte er, wo ich das "using" her habe. Habe ihm gesagt, dass ich das aus Wissensaneignung im Netz habe, was ja auch absolut stimmt und das war OK für ihn, wenngleich er eben auch meinte, dass ihm der Lösungsweg für die Lehrstunde nicht zusagt. Ich weiß ehrlich gesagt garnicht, wie er sonst dazu steht, aber hier werden einem ja auch Lösungen nicht vorgekaut, sondern nur Denkschübe verpasst, so dass man noch selber seinen Grips anstrengen muss, also kann es ja nicht so schlimm sein 😉

    @DarkShadow44
    Danke für den Beitrag, habe ich grade erst gesehen 🙂
    Werde das jetzt alles mal durchgehen...

    Jo, das hat definitv geholfen, wenngleich ich nicht genau weiß, wie so das jetzt mit dem Feld([i]) geholfen hat.



  • Jo, das hat definitv geholfen, wenngleich ich nicht genau weiß, wie so das jetzt mit dem Feld([i]) geholfen hat.

    was genau weißt du nicht ?


Log in to reply