0

我正在构建一个使用 450 个音乐样本的音乐应用程序。我在应用程序包中有所有歌曲和艺术品。我正在尝试将它们复制到 IsoStorage 并使用文件名填充数据库表以供以后使用。

我这样做是为了以后我的应用程序可以定期接收更新,但是对于第一次使用,我不想使用网络服务来下载数据。

private void InitMyStorage()
    {
        IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();

        if (!isf.DirectoryExists("Audio"))
        {
            isf.CreateDirectory("Audio");
        }
        DirectoryInfo di = new DirectoryInfo("Data");// Directory in the application
        var ext = new List<String> { ".jpg", ".mp4" };
        var files = di.GetFiles().Where(f => ext.Contains(f.Extension)).ToList();
        foreach (var file in files)
        {                
           writeFile(file.Name, "Audio\\"+file.Name); // Stream writer method
        }
    }

问题是对于模拟器,我可以看到目录中的文件列表,但在设备上它会引发异常。

创建文件列表后,我正在调用 whriteFile 方法,如下所示

private void writeFile(string szFrom, string szTo)
    {
        Stream str = Application.GetResourceStream(new Uri("Data/" + szFrom, UriKind.Relative)).Stream;
        if (str != null)
        {
            IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();
            IsolatedStorageFileStream isfsOutput = isf.OpenFile(szTo, System.IO.FileMode.Create);

            if (isfsOutput != null)
            {
                BinaryReader brInput = new BinaryReader(str);
                BinaryWriter bwOutput = new BinaryWriter(isfsOutput);

                for (byte[] buffer = brInput.ReadBytes(1024); buffer.Length > 0; buffer = brInput.ReadBytes(1024))
                {
                    bwOutput.Write(buffer);
                }

                bwOutput.Close();
                brInput.Close();
            }
            isfsOutput.Close();
        }
    } 

如果有人可以帮助请:) 为什么在设备上我无法读取目录?

或者给我另一个关于如何实现这一点的想法。?.

4

1 回答 1

0

查看Matt Lacey 的这个答案,它使用由 T4 模板生成的静态文件列表来部署。

于 2013-03-10T15:44:18.030 回答