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 に答える