Windows Phone 7将数据从安装文件夹复制到IsolatedStorage

时间:2012-12-05 10:50:46

标签: windows-phone-7 isolatedstorage

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

我这样做以后我的应用程序可以定期收到更新,但是第一次使用时我不想使用Web服务来下载数据。

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();
        }
    } 

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

或者给我另一个如何实现它的想法。 ?。

1 个答案:

答案 0 :(得分:0)

查看this answer from Matt Lacey,它使用由T4模板生成的静态文件列表。