Вопрос

Используя C#, я загружаю файл из URL -адреса, который пользователь входит в телефон. Когда он записывает файл в IsolatedStorage, он пишет слишком много байтов в файл, и, следовательно, программа, используемая для открытия этих файлов, не откроется.

Когда я отлаживаю, размер битов составляет 451 258 байтов, но когда файл экспортируется из изолированного стеклянга, он составляет 454 656 байтов. Он заполняет оставшееся пространство пространствами. Есть ли в любом случае, чтобы настроить этот размер файла? Обрезать дополнительное место в конце и сохранить?

Прости мое невежество, так как я новичок в C# и WP7 Development. Я был бы очень признателен за помощь.

Вот мой код:

       public void readCompleteCallback(Object sender, OpenReadCompletedEventArgs e)
    {
        if (e.Error == null)
        {
            try
            {
                //string fileName = txtUrl.Text.Substring(txtUrl.Text.LastIndexOf("/") + 1).Trim();
                string fileName = "DownloadedNZB.nzb";
                bool isSpaceAvailable = IsSpaceIsAvailable(e.Result.Length);

                if (isSpaceAvailable)
                {
                    // Save mp3 to Isolated Storage
                    using (var isfs = new IsolatedStorageFileStream(fileName,
                                        FileMode.CreateNew,
                                        IsolatedStorageFile.GetUserStoreForApplication()))
                    {
                        long fileLen = e.Result.Length;
                        byte[] b = new byte[fileLen];
                        e.Result.Read(b, 0, b.Length);
                        isfs.Write(b, 0, b.Length);
                        isfs.Flush();
                        isfs.Close();
                        MessageBox.Show("File downloaded successfully");                      
                    }

                }
                else
                {
                    MessageBox.Show("Not enough to save space available to download the file");
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        else
        {
            MessageBox.Show(e.Error.Message);
        }

    }
Это было полезно?

Решение

Заменять

e.Result.Read(b, 0, b.Length);
isfs.Write(b, 0, b.Length);
isfs.Flush();
isfs.Close();

с

var numberOfBytesRead = e.Result.Read(b, 0, b.Length);
isfs.Write(b, 0, numberOfBytesRead);
isfs.Flush();
isfs.Close();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top