あじちゃんのブログ。備忘録。

〜SEもOLなんですかね?

ファイルの存在チェック時の相対パス指定

絶対パスの使用は控えましょう
理由:ディスク構成、ディレクトリ名の変更、データ保存場所の変更時に修正が発生するため。
   ハードコーディングで絶対パスは使用しない。

絶対パスでしか比べられないと思っていたけれど、MapPath()を使うことにより相対パスから絶対パスを取り出すことが出来る。

いままで

filePath = @"C:\world\asia\japan\pdf" + @"\" + DV[0]["ID"].ToString() + ".pdf"    //構成が変わった場合が面倒・・・
if (File.Exists(filePath) == true)
{
    HL_FileLink.NavigateUrl = filePath;
}

Server.MapPath() を使う場合

filePath = "~/pdf/" + DV[0]["ID"].ToString() + ".pdf"
if (File.Exists(Server.MapPath(filePath) == true)    //相対パスを絶対パスに書き換えてから比較している
{
    HL_FileLink.NavigateUrl = filePath;
}

[参考] https://msdn.microsoft.com/ja-jp/library/system.web.httpserverutility.mappath(v=vs.110).aspx