0

次のコマンドを使用して、FileSystemInfo のリストを取得しています。

IList<FileSystemInfo> requestFiles = 
                new List<FileSystemInfo>(
                    _RequestDirectory.GetFileSystemInfos(GetSearchPatern())); 

検索パターンを取得すると、「*.exr」が返されます。リストには、「.exr2」で終わるファイルは引き続き含まれますが、「.exr.bak」で終わるファイルは含まれません。これは期待される機能ですか?返されたファイルを手動で確認する必要がありますか? これは、コマンド ラインの dir コマンドから取得した結果と同じであることに気付きました。

4

2 に答える 2

2

MSDN から:

".txt」の場合、拡張子がちょうど 3 文字の長さである場合の一致動作は、拡張子が 3 文字より多い場合と短い場合とでは異なります。正確に 3 文字のファイル拡張子を持つ searchPattern は、3 文字以上の拡張子を持つファイルを返します。ここで、最初の 3 文字は、searchPattern で指定されたファイル拡張子と一致します。1 文字、2 文字、または 3 文字を超えるファイル拡張子を持つ searchPattern は、searchPattern で指定されたファイル拡張子と正確に一致する長さの拡張子を持つファイルのみを返します。疑問符のワイルドカード文字を使用する場合、このメソッドは、指定されたファイル拡張子に一致するファイルのみを返します. たとえば、ディレクトリ内に "file1.txt" と "file1.txtother" という 2 つのファイルがある場合、"file? 。TXT"最初のファイルだけを返しますが、「ファイル」の検索パターンは.txt" は両方のファイルを返します。

ここから引っ張ってきましたhttp://msdn.microsoft.com/en-us/library/wz42302f.aspx

.exr.bak が「*.exr」と一致しない理由は、拡張子が最後の「.」の後の文字セットであると判断されるためです。(またはファイル拡張子区切り文字) であるため、.exr は .bak と一致しません。

于 2009-09-02T18:18:49.613 に答える
1

これは、ファイルに対して自動的に生成される短い名前が原因です。短い名前では、拡張子は常に「.」の後の最後のものです。最大で 3 文字です。これは、「example.ext2」の短縮名が「.ext」で終わり、「example.ext.bak」の短縮名が「.bak」で終わることを意味します。

于 2009-09-02T18:00:56.933 に答える