2016-05-14 5 views
1

私のプロジェクトには.csvファイルが含まれています。パラメータとしてパスを取るStreamReaderを作成しましたが、ファイル名の代わりにファイルへのフルパスを含める必要があります。ファイルへのフルパスを含むことを避ける方法

I.e.代わりに

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

new StreamReader("products.csv");私はStreamReaderを全体パスではなくファイル名だけを受け入れるようにするために何ができますか?

答えて

2

あなたのbin \ debugフォルダにファイルを移動し、これを使用することができます。

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

を設定へのルートパスを追加することができます。プロジェクトのプロパティを見ると、[ビルドイベント]というセクションがあります。プロジェクトをビルドするときに、自動的にファイルをビンにコピーするマクロを追加できます。 – Clint

+2

'Environment.CurrentDirectory' **は実行可能ファイルが存在するディレクトリではなく、アプリケーションインスタンスの作業ディレクトリ(変更可能です)です。実行可能ファイルのディレクトリを取得するには、 'Application.StartupPath'や' System.AppDomain.CurrentDomain.BaseDirectory() 'や' Path.GetDirectoryName(Application.ExecutablePath) 'のようなものを使う必要があります。 –

+1

@VisualVincent明確化のためにありがとう、私は自分の投稿を編集しました。 – Clint

2

あなたはどういたしまして@jmkjaer

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

関連する問題