【開発環境】
Windoes10(x64)
Visual Studio 2013
現在、任意のフォルダーに対してファイル一覧を取得する関数を作成しています。
ここで問題が発生しました。
以下のようなファイル構成と仮定します。
■Cドライブ
c:\tmp\sample.xls
c:\tmp\sample.xlsx
■Dドライブ
d:\tmp\sample.xls
d:\tmp\sample.xlsx
ここで、下記コードを実行すると、取得できるファイルが異なります。
C#;
1string path1 = @"c:\tmp"; 2Directory.GetFiles(path1, "*.xls"); // sample.xls, sample.xlsx どちらも取得できる 3 4string path2 = @"d:\tmp"; 5Directory.GetFiles(path2, "*.xls"); // sample.xls のみ取得できる
Directory.GetFiles メソッド
MSDN を参照すると、必ず xls, xlsx どちらのファイルも取得できると考えています。
以下、MSDN(Directory.GetFiles)のメモを引用
アスタリスクのワイルドカード文字を使用する場合、 searchPattern 「.txt」など、指定した拡張子の文字数影響を与えます検索次ようにします。
指定された拡張機能が 3 文字の場合は、指定した拡張子が始まる拡張子を持つファイルを返します。
たとえば、「.xls」には、"book.xls"と"book.xlsx"両方が返されます。
その他のすべてのケースでは、メソッドは、指定された拡張機能を正確に一致するファイルを返します。
たとえば、"* .ai"が"file.ai"、"file.aif"を返します。
疑問符 () のワイルドカード文字を使用すると、このメソッドは、指定されたファイル拡張子に一致するファイルのみを返します。
たとえば、ディレクトリの検索パターンに 2 つのファイル、"file1.txt"および"file1.txtother"指定された"ファイル? です。txt"は最初のファイルだけを返し、"file*.txt"の検索パターンには、両方のファイルが返されます。
なぜDドライブ内のフォルダーに対しては xlsx が取得できないのでしょうか?
ご存じの方がいらっしゃいましたら、ご回答いただけますようお願いいたします。
【追記】
検証情報をいただいたため、追記します。
・Windows7環境では現象が発生しません
・ドライブはいずれもNTFSです
・Windows10、及びWindowsServer2016で現象を確認しています。
以上

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/27 09:24
2017/01/27 11:26
2017/01/27 12:46