-2

写真が存在するかどうかを確認しようとしていますが、これはそこにないことを示しており、パスは正しいです! パスは正しく、画像がありますが、これは常に「else」に移動します。

string path = @"c:\folder\pic.jpg";

if (File.Exists(path))
{ 
    //Do something here 
}
else 
{
}
4

3 に答える 3

12

権限の問題である可能性があります。ドキュメントから:

呼び出し元が指定されたファイルを読み取るための十分な権限を持っていない場合、例外はスローされず、メソッドはパスの存在に関係なく false を返します。

もちろん、これは、クライアント アプリよりも Web アプリ (通常は制限されたアクセス許可で実行される) を実行しているときに、この問題が発生する可能性が高いことを意味します。

さらに、deerchao のコメントに記載されているように、指定されたパスがディレクトリではなくファイルFile.Existsへのパスである場合にのみ true を返します。繰り返しますが、ドキュメントから:

パスがディレクトリを表す場合、このメソッドは false を返します。

于 2012-05-20T19:15:41.677 に答える
5

を使用してフォルダが存在するかどうかを確認しようとしていますFile.Exists。これは正しくありません。ディレクトリでは失敗します。

Directory.Existsディレクトリが存在するかどうかを調べるために使用します。

string path = @"c:\folder";

if (Directory.Exists(path))
{ 
    //Do something here 
}
else 
{
}

さらに複雑なのは、アプリケーションを実行しているアカウントにパスを読み取る権限が必要なことです。権限がない場合、パスが存在しても失敗します。

于 2012-05-20T19:16:47.200 に答える
4

指定したディレクトリ内にファイルが存在するかどうかを確認しようとしていると思いますか? その場合、次を使用できます。

string path = @"c:\folder";

if (Directory.Exists(path) &&
    Directory.GetFiles(path).Any())
{
    //Do something here 
}
else
{
}

GetFiles.NET 4 以降では、呼び出しをに置き換えることで、2 番目のチェックを最適化できますEnumerateFiles

于 2012-05-20T19:18:41.410 に答える