none
IO.Directory.GetFilesの結果 RRS feed

  • 質問

  • #VS2005T/S,XPSP2,Office2003

    MSDNにはこう記述されています。
    http://msdn2.microsoft.com/ja-jp/library/wz42302f(VS.80).aspx

    --------------------------------------------------------------------------------

    拡張子の長さがちょうど 3 文字の場合の searchPattern の一致の動作は、拡張子が 3 文字を超えている場合の動作と異なります。ちょうど 3 文字の searchPattern の場合は、3 文字以上の拡張子を持つファイルが返されます。searchPattern の文字数が 1、2、または 4 以上の場合は、その長さを持つ拡張子のファイルだけが返されます。

    searchPattern パラメータにさまざまな長さが設定された場合の動作を次のリストに示します。

    • "*.abc*" の場合、.abc、.abcd、.abcde、.abcdef などの拡張子を持つファイルが返されます。
    • "*.abcd" の場合、拡張子が .abcd のファイルだけが返されます。
    • "*.abcde" の場合、拡張子が .abcde のファイルだけが返されます。
    • "*.abcdef" の場合、拡張子が .abcdef のファイルだけが返されます。

    --------------------------------------------------------------------------------

     で、IO.Directory.GetFiles("c:\temp", "*.xml")の結果として、~.xmlx が含まれてしまいます。

    どのように解釈すればよいのでしょうか?
    特に引用前半の「Patternの長さ」と「拡張子」の関係がわかりません。

    2007年1月10日 1:43

回答

  • 仮説ですが、8.3 の short filename の影響というのはどうでしょうか?

    例えば、moga.txtx というファイルを作成して、dir /X で short filename を見てみたところ moga~1.txt という名前になっていました。

    「拡張子が4文字以上の場合には short filename ということはないので、そちらを見ることはないが3文字だと両方チェックしてしまう」のではないかと推測します。

     

    2007年1月10日 2:10

すべての返信

  • 仮説ですが、8.3 の short filename の影響というのはどうでしょうか?

    例えば、moga.txtx というファイルを作成して、dir /X で short filename を見てみたところ moga~1.txt という名前になっていました。

    「拡張子が4文字以上の場合には short filename ということはないので、そちらを見ることはないが3文字だと両方チェックしてしまう」のではないかと推測します。

     

    2007年1月10日 2:10
  •  Takashi SAKAMOTO さんからの引用

    例えば、moga.txtx というファイルを作成して、dir /X で short filename を見てみたところ moga~1.txt という名前になっていました。

    そのようですね。

    でもって、罠にはまってたようです。。。
    http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1092569&SiteID=7

    2007年1月10日 2:43