2016-05-22 6 views
-1

Ich habe ein Programm, wo ich Dateipfad von der Konsole abrufen möchte, zum Beispiel Programm fragt mich, einen Pfad der Datei eingeben, aber hier ist das Problem, ich möchte nicht den gesamten Pfad nach unten schreiben. Ich möchte OpenFiledialog verwenden oder eine Textdatei innerhalb der Lösung erstellen und Pfad von dort erhalten. Hier ist ein kurzer Code aus dem Bereich:bekomme Dateipfad durch Konsole C#

string input; 
Console.WriteLine("Type path file: "); 
input = Console.ReadLine(); 

string readText = File.ReadAllText(input); 

Tree HuffmanTree = new Tree(); 

// Build the Huffman tree 
HuffmanTree.Build(readText); 

Und ich bereits eine Text.txt Datei innerhalb aplication, und ich mache Konsole aplication in C#. Der Fehler ist, dass das Programm einen Pfadnamen zB nicht finden kann. Text.txt, aber wenn ich den ganzen Pfad anstelle von "Eingabe" Programm verwenden.

Antwort

0

Sie müssen sicherstellen, dass als .exe im selben Verzeichnis Ihre TXT-Datei wird Sie ausführen

Sie können Visual Studio mit zu Ihrem Debug-Position zu kopieren machen:

Klicken Sie auf Ihre Datei in Ihrer Lösung Explorer und legen Sie die "Copy to Output Directory" Option

Solution Explorer

+0

, die genau das Problem war, danke! – anthraxa

0

Stellen Sie sicher, Ihre Wege und Dinge haben @ vor der Zeichenfolge, wie @ "c: \" alle Zeichenliterale zu entkommen. Auch wissen, dass, wenn die Textdatei auf die EXE nächsten ist, dass Sie nicht den vollständigen Pfad zur Verfügung stellen müssen, bieten Sie nur den Dateinamen, in diesem Fall wäre es „test.txt“

using System.IO; 
using System.Linq; 
using System.Text.RegularExpressions;  

public static string getPathFromUser(string path) 
    { 
     if (File.Exists("test.txt")) 
     { 
      string k = Regex.Replace(File.ReadAllLines("test.txt").Single(d => d.ToLower().Contains(path.ToLower())), @"\w+:", "\0"); 
      return k != null || k != string.Empty ? k : "Unknown option."; 
     } 
     else 
     { 
      File.AppendAllText("test.txt", "home:"); 
      return "No file found, made one instead"; 
     } 
    } 

Die txt aussehen würde, so etwas wie diese:

enter image description here