我正在构建一个使用 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();
}
}
如果有人可以帮助请:) 为什么在设备上我无法读取目录?
或者给我另一个关于如何实现这一点的想法。?.