0

以下の抜粋を使用して、分離ストレージにオーディオ ファイルを保存しています。ただし、streamresourceinfo が absoluteUri にマップされると、例外が発生します。URI は相対 URI のみを受け入れます。絶対 URI を使用してオーディオ ファイルを保存する方法を教えてください。

private void SaveMp3()
    {
        string FileName = "Audios/Deer short.mp3";
        FileName = "http://www.ugunaflutes.co.uk/Deer short.mp3";
        StreamResourceInfo streamResourceInfo = Application.GetResourceStream(new Uri(FileName, UriKind.RelativeOrAbsolute));

        using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (myIsolatedStorage.FileExists(FileName))
            {
                myIsolatedStorage.DeleteFile(FileName);
            }

            using (IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream("Audio.png", FileMode.Create, myIsolatedStorage))
            {
                using (BinaryWriter writer = new BinaryWriter(fileStream))
                {
                    Stream resourceStream = streamResourceInfo.Stream;
                    long length = resourceStream.Length;
                    byte[] buffer = new byte[32];
                    int readCount = 0;
                    using (BinaryReader reader = new BinaryReader(streamResourceInfo.Stream))
                    {
                        // read file in chunks in order to reduce memory consumption and increase performance
                        while (readCount < length)
                        {
                            int actual = reader.Read(buffer, 0, buffer.Length);
                            readCount += actual;
                            writer.Write(buffer, 0, actual);
                        }
                    }
                }
            }
        }
    }

前もって感謝します。

4

1 に答える 1

0

アプリケーション パッケージhttp://msdn.microsoft.com/en-us/library/ms596994(v=vs.95).aspxに対して相対的でなければならないApplication.GetResourceStreamため、外部リソースの読み込みには使用できません。mp3 ファイルをダウンロードするために使用する必要があり、ローカルに保存した後、例の平和:URIWebClient.OpenReadAsyncIsolatedStorage

var webClient = new WebClient();
            webClient.OpenReadCompleted += (sender, args) =>
                                               {
                                                   if (args.Error != null)
                                                   {
                                                       //save file here
                                                   }
                                               };

            webClient.OpenReadAsync(new Uri("http://www.ugunaflutes.co.uk/Deer short.mp3"));
于 2013-06-26T14:07:52.357 に答える