WP7 IsolatedFileStorageStream -错误的字节大小

本文关键字:字节 错误 IsolatedFileStorageStream WP7 | 更新日期: 2023-09-27 18:16:15

使用c#,我正在从用户在手机上输入的url下载文件。当它将文件写入IsolatedStorage时,它向文件写入了太多字节,因此,用于打开这些文件的程序将无法打开。

当我调试时,位大小是451,258字节,但当文件从IsolatedStorage导出时,它是454,656字节。它用空格填充剩余的空间。有没有办法调整这个文件的大小?修剪掉最后多余的空间并节省?

请原谅我的无知,因为我是c#和WP7开发的新手。我真的很感激你的帮助。 下面是我的代码:
       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);
        }
    }

WP7 IsolatedFileStorageStream -错误的字节大小

Replace

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