目次
経緯
いつも絶対パスを使っていたが、他の人がコードを使うときに、絶対パスではエラーが起こりやすいので、今回、相対パスを使って、.csvファイルのデータを読み込んでみます。
手順
まず、プログラムのコードを書きます。フォームで「btnReadcsv」というボタンを作成して、ボタンを押すと、「csvファイルが読まれる」という想定です。
private void btnReadcsv_Click(object sender, EventArgs e)
{
// プロジェクトのディレクトリを取得
string projectDir = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName;
// データのディレクトリへのパスを作成
string dataDir = Path.Combine(projectDir, "data");
var files = Directory.GetFiles(dataDir);
foreach (var file in files)
{
var lines = File.ReadAllLines(file);
foreach (var line in lines)
{
var values = line.Split(',');
// ここで各行の値に対する処理を行う
}
}
}
こんな感じです。
Directory.GetParentメソッドを2回呼び出すことでうまくいきました。
このコードでは、アプリケーションの実行ディレクトリから2つ上のディレクトリ(プロジェクトのルートディレクトリ)を取得し、そこから”data”ディレクトリへのパスを組み立てます。
何かの参考になれば、幸いです。
ここまで読んでいただきありがとうございました。