Frage

Mit C#lade ich eine Datei von einer URL herunter, die der Benutzer am Telefon eingreift. Wenn sie die Datei an die IsolationStorage schreibt, schreibt sie zu viele Bytes in die Datei, und daher wird das Programm, mit dem diese Dateien geöffnet werden, nicht geöffnet.

Wenn ich debugug, beträgt die Bitgröße 451.258 Bytes, aber wenn die Datei aus IsolatedStorage exportiert wird, beträgt sie 454.656 Bytes. Es füllt den verbleibenden Raum mit Räumen. Gibt es trotzdem, um diese Dateigröße anzupassen? Am Ende den zusätzlichen Platz abschneiden und sparen?

Verzeihen Sie meine Unwissenheit, da ich bei C# und WP7 -Entwickler neu bin. Ich würde die Hilfe wirklich schätzen.

Hier ist mein Code:

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

    }
War es hilfreich?

Lösung

Ersetzen

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

mit

var numberOfBytesRead = e.Result.Read(b, 0, b.Length);
isfs.Write(b, 0, numberOfBytesRead);
isfs.Flush();
isfs.Close();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top