日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

如何使用 C# 压缩单个文件?

發(fā)布時間:2023/12/4 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用 C# 压缩单个文件? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

咨詢區(qū)

  • user3362735

我的項目有一個需求,需要對 文件夾 下的文件進(jìn)行壓縮,我用 ZipFile.CreateFromDirectory 方法發(fā)現(xiàn)并不能成功,但我對整個文件夾壓縮是沒有問題的,請問我該如何正確實(shí)現(xiàn)?

回答區(qū)

  • John Koerner

可以借助 file 或者 memorystream 再通過 CreateEntryFromFile() 創(chuàng)建一個存檔文件。

  • filestream

  • 如果你有權(quán)限創(chuàng)建一個 zip 文件,那么可以使用 filestream,參考如下代碼:

    using?(FileStream?fs?=?new?FileStream(@"C:\Temp\output.zip",FileMode.Create)) using?(ZipArchive?arch?=?new?ZipArchive(fs,?ZipArchiveMode.Create)) {arch.CreateEntryFromFile(@"C:\Temp\data.xml",?"data.xml"); }
  • memorystream

  • 如果你不想保存任何磁盤痕跡,可以在內(nèi)存中做任何事情,參考如下代碼:

    using?(MemoryStream?ms?=?new?MemoryStream()) using?(ZipArchive?arch?=?new?ZipArchive(ms,?ZipArchiveMode.Create)) {arch.CreateEntryFromFile(@"C:\Temp\data.xml",?"data.xml"); }

    最后你可以將 MemoryStream 寫入到 File 。

    using?(FileStream?file?=?new?FileStream("file.bin",?FileMode.Create,?System.IO.FileAccess.Write))?{byte[]?bytes?=?new?byte[ms.Length];ms.Read(bytes,?0,?(int)ms.Length);file.Write(bytes,?0,?bytes.Length);ms.Close(); }
    • John Koerner

    其實(shí)在 .NET 中有很多種途徑可以解決這種問題,你可以借助一些第三方類,比如:SharpZipLib ,sevenzipsharp, DotNetZip。

    當(dāng)然你用 ZipFile 也是可以解決的,下面是使用 FileStream 的方式。

    using?(var?zip?=?ZipFile.Open("file.zip",?ZipArchiveMode.Create)) {var?entry?=?zip.CreateEntry("file.txt");entry.LastWriteTime?=?DateTimeOffset.Now;using?(var?stream=?File.OpenRead(@"c:\path\to\file.txt"))using?(var?entryStream?=?entry.Open())stream.CopyTo(entryStream); }

    也可以用更簡短的寫法。

    //?reference?System.IO.Compression using?(var?zip?=?ZipFile.Open("file.zip",?ZipArchiveMode.Create))zip.CreateEntryFromFile("file.txt",?"file.txt");
    • AlexanderBrevig

    既然壓縮整個文件夾是可以的,那可以通過創(chuàng)建一個臨時文件夾解決,然后借助臨時文件夾進(jìn)行壓縮。

    壓縮流程

  • 創(chuàng)建一個臨時文件夾

  • 將文件移動到文件夾

  • 壓縮文件夾

  • 刪除文件夾

  • 解壓縮流程

  • 解壓縮zip提取文件夾

  • 從文件夾中提取出文件

  • 刪除臨時文件夾

  • 點(diǎn)評區(qū)

    我個人在 zip 壓縮的業(yè)務(wù)時用的是 DotNetZip,非常方便,功能也非常強(qiáng)大,強(qiáng)烈推薦。

    總結(jié)

    以上是生活随笔為你收集整理的如何使用 C# 压缩单个文件?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。