1

我正在使用波纹管代码下载文件。但它下载文件但不显示内容或不打开文件。文件路径不同。我的项目在不同的路径上,我从不同的路径获取文件。这些文件不存储在项目路径中。文件路径、大小、名称存储在数据库中。

Crc32 crc = new Crc32();
ZipOutputStream s = new ZipOutputStream(File.Create(
       @"C:\Documents and Settings\admin\My Documents\Downloads\Evidence.zip"));

s.SetLevel(0); // 0 - store only to 9 - means best compression

FileStream fs = File.OpenRead(@"c:\boot.ini");
byte[] buffer = new byte[fs.Length];

fs.Read(buffer, 0, buffer.Length);

if (ds.Tables[0].Rows.Count > 0)
{
  for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
  {
    string fileNamePath = Convert.ToString(ds.Tables[0].Rows[i]["EvidencePath"]);
    string fileNmae = Convert.ToString(ds.Tables[0].Rows[i]["EvidenceName"]);

    ZipEntry entry = new ZipEntry(ZipEntry.CleanName(@fileNmae));
    entry.DateTime = DateTime.Now;
    entry.Comment = "test file";
    entry.ZipFileIndex = i + 1;
    entry.Size = fs.Length;

    //fs.Close();

    crc.Reset();
    crc.Update(buffer);
    entry.Crc = crc.Value;

    s.PutNextEntry(entry);
    s.Write(buffer, 0, buffer.Length);

    //Response.WriteFile(""+fileNamePath);
  }
  s.Finish();
  s.Close();
  fs.Close();
}

ShowMessageBox("Downloaded....");
4

1 回答 1

0

我只是快速浏览了您的代码,但如果我理解正确,则不会将任何内容写入文件,对吗?您可以尝试在接近尾声时添加以下内容:

S.Flush()

当您关闭流时,这可能会自动发生,但我已经看到无论出于何种原因它都不会发生的情况。刷新将确保缓冲区中的任何数据在您关闭文件之前实际写入文件。

于 2012-07-04T08:53:46.027 回答