2016-05-14 19 views
1

Ich habe eine .csv-Datei, die ich in mein Projekt aufgenommen habe. Ich habe einen StreamReader erstellt, der einen Pfad als Parameter verwendet, aber ich muss den vollständigen Pfad zur Datei und nicht nur den Dateinamen angeben.So vermeiden Sie den vollständigen Pfad zur Datei

I.e. new StreamReader("products.csv"); statt

new StreamReader(@"C:\Users\user\Documents\Visual Studio 2015\Projects\Solution\Project\Products\products.csv");

Was kann ich tun, um die Stream nur einen Dateinamen anstelle eines ganzen Weg akzeptieren zu machen?

Antwort

2

Sie können die Datei in Ihrem bin \ debug-Ordner verschieben und diese verwenden:

new StreamReader("products.csv"); 
+1

config @jmkjaer Sie sind willkommen. Wenn Sie sich die Eigenschaften für Ihr Projekt ansehen, gibt es einen Abschnitt namens Build Events, hier können Sie ein Makro hinzufügen, um automatisch Dateien in Ihr Bin zu kopieren, wenn Sie das Projekt erstellen. – Clint

+2

'Environment.CurrentDirectory' ** ist nicht ** das Verzeichnis, in dem sich die ausführbare Datei befindet, sondern das Arbeitsverzeichnis der Anwendungsinstanz (das änderbar ist). Um das Verzeichnis der ausführbaren Datei zu erhalten, müssten Sie etwas wie 'Application.StartupPath' oder' System.AppDomain.CurrentDomain.BaseDirectory() 'oder sogar' Path.GetDirectoryName (Application.ExecutablePath) 'verwenden. –

+1

@VisualVincent Danke für die Klarstellung, ich habe meinen Beitrag bearbeitet. – Clint

2

Sie können Root-Pfad hinzufügen

public class StreamReader 
{ 
    private string _filePath; 

    public StreamReader(string filePath) 
    { 
     _filePath = Path.IsPathRooted(filePath) 
      ? filePath 
      : Path.Combine(System.Configuration.ConfigurationManager.AppSettings["CsvRootPath"], filePath); 
    } 
} 
+0

Ich muss das irgendwann ausprobieren und sehen, was es macht. Für jetzt aber werde ich Clints Antwort akzeptieren. Trotzdem danke! – jmkjaer

Verwandte Themen