2016-05-14 103 views
1

我有一個.csv文件,我已經包含在我的項目中。我創建了一個將路徑作爲參數的StreamReader,但是我必須包含文件的完整路徑而不是文件名。如何避免包含文件的完整路徑

I.e. new StreamReader("products.csv");代替

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

我能做些什麼使StreamReader的接受只是一個文件名,而不是整個路徑的?

回答

2

您可以將文件移動到你的bin \ debug文件夾中,並使用此:

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

@jmkjaer不客氣。如果您查看項目的屬性,則會有一個名爲Build Events的部分,您可以在生成項目時添加宏以自動將文件複製到bin。 – Clint

+2

'Environment.CurrentDirectory' **不是**可執行文件所在的目錄,而是應用程序實例的工作目錄(可更改)。要獲得可執行文件的目錄,你必須使用類似於'Application.StartupPath'或'System.AppDomain.CurrentDomain.BaseDirectory()'或者甚至是'Path.GetDirectoryName(Application.ExecutablePath)'的東西。 –

+1

@VisualVincent謝謝你的澄清,我編輯了我的文章。 – Clint

2

您可以添加根路徑配置

public class StreamReader 
{ 
    private string _filePath; 

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

我必須嘗試一下,看看它有什麼作用。儘管如此,我會接受克林特的回答。謝謝你! – jmkjaer

相關問題