コガネブログ

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

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

using System.IO;
using System.Linq;

public static class DirectoryUtils
{
    /// <summary>
    /// 指定したディレクトリ内の指定したいずれかの拡張子を持つファイル名 (パスを含む) を返します
    /// </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>
    /// </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()
        ;
    }
}
DirectoryUtils.GetFiles( "Assets/Textures", ".png", ".tga" );