テクニカル雑記帳です
C# ファイルの存在チェック時の相対パス指定
★絶対パスの使用は控えましょう
理由:ディスク構成、ディレクトリ名の変更、データ保存場所の変更時に修正が発生するため。
ハードコーディングで絶対パスは使用しない。
★絶対パスでしか比べられないと思っていたけれど、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