コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】指定したディレクトリ内から指定したいずれかの拡張子を持つすべてのファイルのパスを返す関数

ソースコード

using System.IO;
using System.Linq;

public static class DirectoryUtils
{
    /// <summary>
    /// <para>指定したディレクトリ内の指定した</para>
    /// <para>いずれかの拡張子を持つファイル名 (パスを含む) を返します</para>
    /// </summary>
    public static string[] GetFiles
    ( 
        string          path       , 
        params string[] extensions 
    )
    {
        return Directory
            .GetFiles( path, "*.*" )
            .Where( c => extensions.Any( extension => c.EndsWith( extension ) ) )
            .ToArray()
        ;
    }
    
    /// <summary>
    /// <para>指定したディレクトリの中から、</para>
    /// <para>指定したいずれかの拡張子を持ち、</para>
    /// <para>サブディレクトリを検索するかどうかを決定する</para>
    /// <para>値を持つファイル名 (パスを含む) を返します</para>
    /// </summary>
    public static string[] GetFiles
    ( 
        string          path         , 
        SearchOption    searchOption , 
        params string[] extensions 
    )
    {
        return Directory
            .GetFiles( path, "*.*", searchOption )
            .Where( c => extensions.Any( extension => c.EndsWith( extension ) ) )
            .ToArray()
        ;
    }
}

使い方

var list = DirectoryUtils.GetFiles( "Assets/Textures", ".png", ".tga" );

関連記事

http://baba-s.hatenablog.com//entry/2014/06/09/210016