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
}
}
問題は、シミュレータの場合、ディレクトリ内のファイルのリストを表示できますが、デバイスでは例外がスローされることです。
ファイルのリストが作成されたら、次のように writeFile メソッドを呼び出します
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();
}
}
誰か助けてください:)デバイスでディレクトリを読み取れないのはなぜですか?
または、これを実装する方法について別のアイデアを教えてください。?.