Hey,
habe hier folgenden Code, der auch funktioniert:
if (userInput == "1")
{
string[] allFiles = Directory.GetFiles(@"C:\Users\Debug", "*.txt");
Console.WriteLine("Wähle eine Datei aus, die du öffnen möchtest:", allFiles.Length);
Console.Write("\n");
for (int index = 0; index < allFiles.Length; index++)
{
string fileName = Path.GetFileName(allFiles[index]);
Console.WriteLine("{0} Datei: {1}", index, allFiles[index]);
}
string inputFile = Console.ReadLine();
int userIndex;
if (int.TryParse(inputFile, out userIndex))
{
if (userIndex >= 0 && userIndex < allFiles.Length)
{
string selectFile = allFiles[userIndex];
string readText = File.ReadAllText(selectFile);
Console.WriteLine(readText);
}
else
{
Console.WriteLine("Eingabe außerhalb des Bereichs!");
}
}
else
{
Console.WriteLine("Kein numerischer Wert!");
Console.Read();
}
Console.Read();
Jetzt gibt er mir immer den kompletten Pfad aus, ich möchte aber das er mir eben nur den hinteren Teil also den Namen ausgibt.
Wie ihr seht habe ich es bereits mit
for (int index = 0; index < allFiles.Length; index++)
{
string fileName = Path.GetFileName(allFiles[index]);
Console.WriteLine("{0} Datei: {1}", index, allFiles[index]);
}
string inputFile = Console.ReadLine();
versucht. Man braucht ja die GetFileName Methode, aber wo liegt den mein Fehler? Finde im Internet nichts dazu und er gibt mir auch keinen Fehler aus 🤔
Hallo Lens445,
mit
string fileName = Path.GetFileName(allFiles[index]);
Console.WriteLine("{0} Datei: {1}", index, allFiles[index]);
hast du den Filename schon, aber du gibst trotzdem die File an der Stelle index
im Array allFiles
aus. Du verwendest den fileName
ja gar nicht an der Stelle.
Das ist aber was, was man spätestens mit dem [Artikel] Debugger: Wie verwende ich den von Visual Studio? herausgefunden hätte. 😉
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Den Fehler kann man sicherlich sehr einfach durch einfaches Debugging klären.
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
Das kannst nur Du kontrollieren an Deinem Code.
Da siehst Du was tatsächlich in den Variablen ist (und nicht nur das, was Du denkst 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ahhh danke! Hab ich total übersehen 8o
Aber: jetzt gibt er mir zwar nicht mehr den ganzen Pfad aus, aber dafür nur noch jeweils einen Buchstaben pro Datei 🤔
Hallo Lens445,
dann machst du irgendwo anders etwas. Wie gesagt: Schaue mal mit dem [Artikel] Debugger: Wie verwende ich den von Visual Studio? was in deinen Variablen drinsteht.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Ok ich hab meinen Fehler gefunden! 🙂 es funktioniert 👍
for (int index = 0; index < allFiles.Length; index++)
{
string fileName = Path.GetFileName(allFiles[index]);
Console.WriteLine("{0} Datei: {1}", index, fileName);
}
string inputFile = Console.ReadLine();
Danke euch für die schnelle Hilfe
Hallo Lens445,
ich vermute mal, dass du an den string fileName
auch einen index gehängt hast 😉 Ein String ist wie ein Array von Chars. Dann gibt er nur einen Buchstaben aus.
Aber jetzt klappts ja.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck