4

このスレッドで見つけたものを試してみましたが、思い通りに機能しませんでした... 画像があるかどうかという名前のフォルダーがありphotosますmay。はpicture's namematriculationクライアントのです。matriculationasを渡し、渡したの名前を持つ があるかどうかを確認する必要がありparameterますpicturematriculationparameter

私はこれを試しました:

public void VerifyPhoto(string matriculation)
        {
            string path = Txt_PhotosPath.Text;
            var file = Directory.GetFiles(path, matriculation + ".jpg");

        }

写真が見つかったかどうかを確認するにはどうすればよいですか? これを比較してみたのですfile != nullが、型ではうまくいきませんvar。ヒントはありますか?debugingあるので写真を見つけたのを見ましたが、それString[1]はわかりませんcheck...

---更新--- path:C:"\Users\admin\Desktop\photos" matriculation:"607659.jpg" その名前のファイルがありますが、false何が問題なのですか?

 string path = Txt_PhotosPath.Text;
            string filename = string.Format("{0}.jpg", matriculation);
            if (Directory.Exists(path))
            {
                if (File.Exists(Path.Combine(path, filename)))
                {
                    return true;
                }
                else
                    return false;
            }
            else
                return false;        
4

6 に答える 6

8
if (File.Exists(Path.Combine(path, matriculation + ".jpg"));
于 2013-02-04T12:04:15.190 に答える
2

とを使用Path.CombineDirectory+File.Existsます。

public bool VerifyPhoto(string matriculation)
{
    string dir = Txt_PhotosPath.Text;
    if(Directory.Exists(dir))
    {
        string fileName = string.Format("{0}.jpg", matriculation);
        if(File.Exists(Path.Combine(dir, fileName)))
            return true;
        else
            return false;
    }
    else
        return false;
}
于 2013-02-04T12:09:43.353 に答える
1

公式ドキュメントの内容は次のとおりです。 http://msdn.microsoft.com/en-us/library/wz42302f.aspx

ファイルがない場合、または searchPattern パラメーターに一致するファイルがない場合、このメソッドは空の配列を返します。

そのため、空の配列が返され、NULL チェックの代わりに空の配列がチェックされます。

于 2013-02-04T12:08:29.890 に答える
1

そのかなり簡単なもの。次の関数は、パラメーターで指定された名前のファイルが存在するかどうかを確認するのに役立ちます。

File.Exists(Path)

名前空間: System.IO

ファイルが存在する場合、この関数は true を返します。それ以外の場合は false を返します。引数は、チェックするファイルのフル パスである文字列です。eg: G:\Folder1\Filder2\File.jpg.

ファイルが見つからない場合は false を返すため、例外はスローされません。

パスとすべてを組み合わせる必要はありません。私の例で述べたように、ファイルの完全なパスを指定するだけです。

詳細については、ここをクリックしてください

于 2013-02-04T12:33:19.963 に答える
0

あなたの質問に答えるために != null を使用できない理由は、GetFiles() の基になるコードがリストを作成し、ToArray() 拡張メソッドを呼び出すためです。

 return new List<string>(FileSystemEnumerableFactory.CreateFileNameIterator(path, userPathOriginal, searchPattern, includeFiles, includeDirs, searchOption, checkHost)).ToArray();

次のいずれかを使用する必要があります:-

file.Count()  file.Length
于 2013-02-04T12:11:00.860 に答える
0

を使用する代わりに、 をvar file使用してstring[] filesください。

ファイルが見つかったかどうかを確認するには、次のようにします。if (files.Length > 0)

を使用するのは一般的に非常に悪い考えなvarので、回避できる場合は使用しないでください。

于 2013-02-04T12:06:09.210 に答える