• C# 文件压缩解压与sqlite存储文件数据


    环境

    • .netframerwork4.8
    • sqlite3

    压缩

    nuget

      <package id="System.IO.Compression" version="4.3.0" targetFramework="net48" />
      <package id="System.IO.Compression.ZipFile" version="4.3.0" targetFramework="net48" />
    
    • 1
    • 2

    UI

    在这里插入图片描述

    代码

    using Dapper;
    using System;
    using System.Data.SQLite;
    using System.IO;
    using System.IO.Compression;
    using System.Linq;
    using System.Windows.Forms;
     
    
    namespace 文件存储Sqlite
    {
        public partial class Form1 : Form
        {
            public string connectionStr = "data source=D:\\test\\sqlitedb.db";
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                using (var conn = new SQLiteConnection(connectionStr))
                {
                    var ds = conn.Query<User>("select * from User");
                    dataGridView1.DataSource = ds;
                }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                OpenFileDialog openFileDialog = new OpenFileDialog()
                {
                    Multiselect = true,
                };
    
                openFileDialog.ShowDialog();
    
                var dir = AppDomain.CurrentDomain.BaseDirectory + "tmp\\";
                Directory.CreateDirectory(dir);
                var files = openFileDialog.FileNames;
    
                foreach (var file in files)
                {
                    File.Copy(file, dir + Path.GetFileName(file));
                }
                var targetZip = Path.GetFileNameWithoutExtension(AppDomain.CurrentDomain.BaseDirectory + files.First()) + ".zip";
                ZipFile.CreateFromDirectory(dir, targetZip);
    
                using (var conn = new SQLiteConnection(connectionStr))
                {
                    var ds = conn.Query<User>("select * from User");
                    var sql = "UPDATE User set File=@file where ID=@id";
                    DynamicParameters pars = new DynamicParameters();
                    pars.Add("file", File.ReadAllBytes(targetZip));
                    pars.Add("id", ds.First().ID);
                    conn.Execute(sql, pars);
                }
    
                Directory.Delete(dir, true);
                MessageBox.Show("ZipOver");
    
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                using (var conn = new SQLiteConnection(connectionStr))
                {
                    var ds = conn.QuerySingle<User>("select * from User where ID=2");
                    File.WriteAllBytes(AppDomain.CurrentDomain.BaseDirectory + "数据库读取到的文件.zip", ds.File);
                }
                ZipFile.ExtractToDirectory(AppDomain.CurrentDomain.BaseDirectory + "数据库读取到的文件.zip", AppDomain.CurrentDomain.BaseDirectory + "数据库读取到的文件");
                MessageBox.Show("UnZipOver");
            } 
        }
    
        public class User
        {
            public int ID { get; set; }
    
            public byte[] File { get; set; }
            public string Name { get; set; }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84

    资源链接(下载地址)

    https://download.csdn.net/download/iml6yu/87060041


    ZipFile 类

    • 命名空间:
      System.IO.Compression
    • 程序集:
      System.IO.Compression.ZipFile.dll
      提供创建、解压缩和打开 zip 存档的静态方法。

    在这里插入图片描述

    • demo
    using System;
    using System.IO.Compression;
    
    class Program
    {
        static void Main(string[] args)
        {
            string startPath = @".\start";
            string zipPath = @".\result.zip";
            string extractPath = @".\extract";
    
            ZipFile.CreateFromDirectory(startPath, zipPath);
    
            ZipFile.ExtractToDirectory(zipPath, extractPath);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    方法

    • CreateFromDirectory(String, String)
      创建 zip 存档,该存档包含指定目录的文件和目录。

    • CreateFromDirectory(String, String, CompressionLevel, Boolean)
      创建 zip 存档,该存档包括指定目录的文件和目录,使用指定压缩级别,以及可以选择包含基目录。

    • CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding)
      创建 zip 存档,该存档包括文件和指定目录的目录,使用指定压缩级别和条目名称的字符编码,以及可以选择包含基目录。

    • ExtractToDirectory(String, String)
      将指定 zip 存档中的所有文件都解压缩到文件系统的一个目录下。

    • ExtractToDirectory(String, String, Boolean)
      将指定存档中的所有文件都解压缩到文件系统的某目录下。

    • ExtractToDirectory(String, String, Encoding)
      将指定 zip 存档中的所有文件解压缩到文件系统的一目录下,并使用项名称的指定字符编码。

    • ExtractToDirectory(String, String, Encoding, Boolean)
      将指定存档中的所有文件都解压缩到文件系统的某目录下。

    • Open(String, ZipArchiveMode)
      以指定的模式打开指定路径上的 zip 归档。

    • Open(String, ZipArchiveMode, Encoding)
      在指定的模式中用指定的项名称汉字解码打开指定路径的 zip 存档。

    • OpenRead(String)
      打开在指定路径用于读取的 zip 存档。

      https://learn.microsoft.com/zh-cn/dotnet/api/system.io.compression.zipfile?view=net-7.0

  • 相关阅读:
    APP自动化之weditor工具
    运筹优化算法常用求解器汇总
    mybatis_plus批量处理(开启rewriteBatchedStatements)
    C++信息学奥赛1171:大整数的因子
    轻松合并视频,一键为视频添加封面,打造个性化批量剪辑!
    内网横向移动
    Spring Boot 入门笔记
    采购数字化提升企业竞争壁垒,供应商系统助力冷链生鲜企业强化供应商管理能力
    浅谈智能安全配电装置在老年人建筑中的应用
    使用WordPress搭建一个专属自己的博客
  • 原文地址:https://blog.csdn.net/iml6yu/article/details/128128547