将资源转换为数组或字典

时间:2015-07-01 18:15:00

标签: c# indexing resources

在我的项目中,我有 525 Wave 文件作为资源。

我想将所有这些Wave文件加载到流数组中并存储它们供以后使用。

问题是我无法索引资源来获取这些文件。

资源按名称排序,我想用此订单填充我的数组。

资源中没有文件夹。只是Wave文件。此外,它没有额外的文件。正好有525个波形文件。

我希望我能做到这样的事情。

        Stream[] waves = new Stream[525];

        for (int i = 0; i < waves.Length; i++)
        {
            waves[i] = Resources[i];
        }

示例文件名的名称。

A00,A01,A02,A03,... B01,B02,B03,... C01 ....

我也试过this。但是文件名不容易被索引。

此外,如果有任何方法将资源放入字典中,它将变得更加容易。

        Stream[] waves = new Stream[525];
        Dictionary<int, Stream> Res = new Dictionary<int, Stream>();

        for (int i = 0; i < waves.Length; i++)
        {
            waves[i] = Res[i];
        }

1 个答案:

答案 0 :(得分:1)

如果您有权访问资源文件夹,请尝试以下代码:

        string[] files = Directory.GetFiles(@"resources", "*.wav");
        Dictionary<string, Stream> dic = new Dictionary<string, Stream>();
        foreach (var file in files)
        {
            byte[] data = File.ReadAllBytes(file);
            MemoryStream stream = new MemoryStream(data);
            dic.Add(Path.GetFileNameWithoutExtension(file), stream);
        }

        foreach (var item in  dic.OrderBy(d=>d.Key))
        {
            // here store item which has been ordered by name!
        }