Hey,
bin neu hier und die Frage klingt vllt doof, aber ich hab mehrere .txt Dateien gespeichert und will diese beim Öffnen meines Programms abrufen.
Ich finde nur Befehle und Tutorials für das Einlesen für einen Pfad? Das ist ja nicht schwer, da geb ich einfach den bestimmten Pfad ein, aber wie mach ich das mit mehreren? Die können sich auch immer verändern, heißt einfach "alle" Pfads eingeben geht auch nicht.
Hier mal mein Code:
if (userInput == "1")
{
Console.WriteLine("Das sind alle vorhandenen Dateien:");
Console.Read();
DirectoryInfo di = new DirectoryInfo(@"C:\Pfad wo alle Dateien drin sind");
foreach (var file in di.GetFiles())
{
Console.WriteLine(file.Name);
Console.Read();
}
Console.WriteLine();
mein Programm beendet sich einfach immer nachdem es jede Datei abgelaufen ist.
Ich muss ihm jetzt irgendwie noch sagen, dass er alle .txt Dateien anzeigen soll, gibt es da einen bestimmten Befehl den ich übersehen habe?
Bin eben neu im Programmieren 😁
LG
Hallo Lens445,
schau dir mal die Directory.GetFiles Method mit den Überladungen an.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hey,
danke, meinst du GetFiles(String,String) ? 🤔
aber ich versteh trotzdem nicht ganz, was mein zweiter string sein soll 8o
LG
Hi,
nun - beenden tut es sich weil es alles getan hat, was du programmiert hast.
Ich vermute mal du möchtest eher an den Inhalt der Dateien rankommen?
Falls dem so ist gibt es viele Wege, u.A:
a) https://msdn.microsoft.com/de-de/library/s2tte0y1(v=vs.110).aspx
b) https://msdn.microsoft.com/en-us/library/ms143368(v=vs.110).aspx
c) https://docs.microsoft.com/de-de/dotnet/csharp/programming-guide/file-system/how-to-read-a-text-file-one-line-at-a-time
etc. pp.
Eine dieser Optionen musst du dann nur noch mit dem Finden der Dateien verbinden.
LG
Hey,
Ja genau den Inhalt der dateien brauch ich auch. Aber das Problem ist, in dem Ordner befinden sich eben viele Dateien, z.B. eine mit .exe, oder .pdb. Aber ich will NUR die .txt Datei in meinem Programm lesen, wisst ihr was ich meine? Momentan sieht meine Konsole so aus:
Wähle eine Option aus:
ConsoleApp3.exe
ConsoleApp3.exe.config
ConsoleApp3.pdb
Hallo.txt
und ich will nur z.B. die Hallo.txt Datei haben.
Warum liest Du nicht die Links, die man Dir gibt?
So ist die Hilfe nutzlos.
Coffeebean hat Dir einen Link für GetFiles gegeben, in der drin steht, wie man nach Dateiendung filtert.
Wenn Du nicht lesen willst, dann bringt das ganze hier nichts.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hey Abt,
Hab ich sehr wohl gelesen und geschrieben, dass ich das nicht ganz verstehe, da ich nicht verstehe was mein zweiter string sein soll, siehe paar Beiträge weiter oben
Hallo Lens445,
bitte schau dir doch die Überladungen an. Ich habs schon geschrieben. Die Methode nimmt mehrere Paramter. U.a. (string,string)
.
Der Link führt auf einen weiteren
Directory.GetFiles Method (String,String)
Da ist sogar ein Codebeispiel.
string[] dirs = Directory.GetFiles(@"c:\", "c*");
Setz deinen Pfad ein. Setz deinen Suchfilter ein "*.txt". Und
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
Dann packst dus schon 😃
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hey 123thomas,
Vielen Dank, hilft mir schon mal sehr viel weiter 🙂
@Coffebean
Danke dir auch, werde es jetzt mal testen. 👍
Hab ich sehr wohl gelesen und geschrieben
Es waren 4 Minuten zwischen Coffeebeans Hinweis und Deiner Antwort drauf....
Da hast Du mit Sicherheit nicht viel gelesen.
Also nimm Dir in Zukunft etwas Zeit um die Links zu lesen und das darin gezeigte auszuprobieren und zu verstehen - und vielleicht mal in Google nach Beispielen dazu suchen.
So viel kann man hier von absolut jedem erwarten. Auch von Dir 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo Lens445,
und wie das Einlesen der Textdateien geht, kannst du in [Tutorial] Dateioperationen: Alles über Dateien 2.2 nachlesen (nur die Abschnitte mit ".NET 2.0" sind dafür noch interessant).
Hey,
habe jetzt folgenden Code:
if (userInput == "1")
{
string[] allFiles = Directory.GetFiles(@"C:\Users\ConsoleApp3\bin\Debug", "*.txt");
Console.WriteLine("Wähle eine Datei aus:", allFiles.Length);
Console.Write("\n");
foreach (string file in allFiles)
{
Console.WriteLine(file);
}
Console.Read();
string indexFile = Console.ReadLine();
Ich glaube ich stehe gerade auf dem Schlauch, aber ich möchte dass meine Dateien nummeriert in der Konsole erscheinen, sodass man eben eine Datei auswählen kann, also die Dateien werden untereinander angezeigt, aber ohne Nummern davor 🤔 wie kann ich das ändern?
LG
Hallo Lens445,
naja...du iterierst ja schon. Was spricht dagegen einen Zähler hochzuzählen in der Schleife?
Alternativ kannst du eine For-Schleife (statt foreach) nehmen, da hast du den index (nullbasiert)
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Du kannst am besten die Pfade der Dateien in eine List<string> schreiben. Dann die List in die Console schreiben und dann kannst du anhand der Eingabe(die ein index sein muss) den Pfad aus der Liste holen um dann die Datei auszulesen.
Gruß
echt, brauch ich dafür ne Liste? 🤔
Dann muss ich ja erst mal immer alles in die Liste speichern und dann abrufen oder?
Hallo Lens445,
hier führen viele Wege nach Rom. Viele schaffen lieber mit Listen statt Arrays. Das, was du bisher vorhattest lässt sich aber mit beidem erreichen. Du brauchst nicht unbedingt eine Liste, kannst sie aber benutzen, wenn du magst.
Schau dir mal die Grundlagen von Schleifen etc an. ich glaube, dann wird vieles klarer. Auch deine Pfadangabe wird knallen, wenn du mal nicht im Debug-Mode kompilierst.
[FAQ] Wie finde ich den Einstieg in C#?
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hey,
danke für eure Hilfe!
was sagt ihr zu diesem Code?
if (userInput == "1")
{
string[] allFiles = Directory.GetFiles(@"C:\Users\Debug", "*.txt");
Console.WriteLine("Wähle eine Datei aus:", allFiles.Length);
Console.Write("\n");
int count = 0;
foreach (string file in allFiles)
{
count += 1;
Console.WriteLine("{0} Datei: {1}", count, file);
}
Console.Read();
string inputFile = Console.ReadLine();
}
Also es wird mir so als 1 Datei ist blablabla 2 Datei ist blabliblub usw angezeigt.
Kann ich damit dann weiter arbeiten, also dass wenn ich jetzt die 1 auswähle er mir dann den Inhalt von 1 ausgibt 🤔
Hallo Lens445,
klar kannst du. Musst es halt implementieren.
Können kann immer mit "Ja" beantwortet werden.
Den index hats du ja schon. Jetzt noch das File an geeigneter Stelle raussuchen und darstellen.
Aber lass uns das nicht programmieren. Versuch es, nimm den Debugger und dann hast du auch Erfolge 😃
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Klar ich probier es selber, wollte nur wissen ob der Ansatz so stimmt 😃
danke 😃
Hallo Lens445,
wir kennen ja auch den Kontext nicht. Natürlich gibt es Verbesserungen, aber bekomm doch erstmal das hin, was du hinbekommen willst und lerne mit der Zeit.
Warum du ein Read
und ein ReadLine()
machst ist mir nicht ganz klar. Aber wenn das ein Review sein soll müssen wir es in Reviews verschieben.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck