Question

Utilisation c #, je télécharge un fichier à partir d'une URL que l'utilisateur entre sur le téléphone. Quand il est en train d'écrire le fichier sur le IsolatedStorage, il est en train d'écrire trop d'octets dans le fichier et, par conséquent, le programme utilisé pour ouvrir ces fichiers ne seront pas ouverts.

Quand je débogage, la taille de bit est 451,258 octets, mais lorsque le fichier est exporté à partir IsolatedStorage il est 454,656 octets. Il remplit l'espace restant avec des espaces. Y at-il de toute façon de régler cette taille de fichier? Coupez l'espace supplémentaire à la fin et sauver?

Pardonnez mon ignorance que je suis novice en C # et WP7 developoment. Je voudrais vraiment apprécier l'aide.

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

    }
Était-ce utile?

La solution

Remplacer

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

avec

var numberOfBytesRead = e.Result.Read(b, 0, b.Length);
isfs.Write(b, 0, numberOfBytesRead);
isfs.Flush();
isfs.Close();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top