System.IO.File.Exists(string path)
指定されたパスにファイルが存在する場合でも、常に false を返します。可能な解決策は何ですか?
許可の問題である可能性があります。ドキュメントから:
Exists メソッドは、指定されたファイルが存在するかどうかを判断しようとしてエラーが発生した場合、false を返します。これは、無効な文字や文字が多すぎるファイル名を渡す、ディスクに障害がある、ディスクが見つからない、呼び出し元にファイルを読み取る権限がないなどの例外が発生する状況で発生する可能性があります。
何が起こっているかを確認する 1 つの方法は、ファイルを読み取ってみることです (たとえば、 を使用File.OpenRead
)。それが成功した場合は驚くでしょうが、失敗した場合は、例外から詳細情報が得られるはずです。
ここでの回答で言及されていない可能性の 1 つは、Windows 8.1 以降の「ファイル システム リダイレクト」です。
たとえば、プログラムが 32 ビット アプリケーションであり、64 ビット Windows で実行している場合、%windir%\System32 にアクセスしようとすると、%windir%\SysWOW64 にリダイレクトされます。また、アクセスしようとしているファイルが %windir%\SysWOW64 に存在しない場合、System.IO.File.Exists(string path) は False を返します。
これをどのように回避したServer.MapPath(fileName)
かは、ファイルを別の場所で見つけようとしていたためです。
System.IO.File.Exists(Server.MapPath(string path))
これは私自身も経験していました。私の場合、ファイルを削除して再作成していました。ファイルを削除するプロセスで、後でWaitForExit()
使用する前に追加するのを忘れていましたFile.Exists
System.IO.File.Exists(string path) は、読み取りを試みているときに false を返しましたC:\OpenSSL\bin\file.txt
。管理者モードでアプリケーションを実行しても役に立ちませんでした。(Windows 10 の管理者アカウントでログオンしました) ファイルを に移動するとC:\Users\MyUser\Desktop\file.txt
、File.Exists() は true を返しました。