Help us understand the problem. What is going on with this article?

C# で再帰的にファイルを探す処理を書いてみた

More than 1 year has passed since last update.

最初にお断りするのですが、↓のオプションをちゃんと使えばだいたい同じことができます。
https://docs.microsoft.com/ja-jp/dotnet/api/system.io.directory.getfiles?view=netframework-4.8

まぁなんとなくイメージできたから書いてみたかった、という程度の理由で自前実装しました。

    public void Main()
    {
        var root = "Assets/StreamingAssets/";
        var paths = new List<string>();

        // txt パスをリストに追加する
        Action<string> action = (path) =>
        {
            if (path.EndsWith(".txt")) { paths.Add(path); }
        };
        CollectPath(root, action);

        foreach (var path in paths)
        {
            // 各パスに対してやりたいこと
            Debug.Log(path);
        }
    }

    private void CollectPath(string root, Action<string> action)
    {
        var dirPaths = Directory.GetDirectories(root);
        foreach (var path in dirPaths)
        {
            // 末尾に \ が付くのを回避(★)
            var p = path + "/";
            CollectPath(p, action);
        }

        var filePaths = Directory.GetFiles(root);
        foreach (var path in filePaths)
        {
            action(path);
        }
    }

rootの値でピンとくる人も多いと思いますが、Unity 用の実装です。
環境が Windows のため何もしないと区切りが \ になってしまうので、★のところで無理やり対処しています。

ryuj
https://ryu-rand.hatenablog.com https://github.com/ryuj https://qiita.com/ryuj https://twitter.com/reximology
https://ryu-rand.hatenablog.com/
drecom-inc
Drecom with entertainment として発明を産み続け、人々の期待を超えるサービスを提供することを目的とした会社です。
https://www.drecom.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away