src/EasyFrameWork/Zip/ZipFile.cs

(开头部分) 5KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

/* http://www.zkea.net/ 
 * Copyright (c) ZKEASOFT. All rights reserved. 
 * http://www.zkea.net/licenses */

using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;

namespace Easy.Zip
{
    public class ZipFile
    {
        private readonly List<KeyValuePair<string, FileInfo>> _singleFiles = new List<KeyValuePair<string, FileInfo>>();
        private readonly List<DirectoryInfo> _directories = new List<DirectoryInfo>();

        public void AddFile(FileInfo file)
        {
            _singleFiles.Add(new KeyValuePair<string, FileInfo>("\\", file));
        }
        public void AddFile(FileInfo file, string relativePath)
        {
            if (!relativePath.EndsWith("\\"))
            {
                relativePath += "\\";
            }
            _singleFiles.Add(new KeyValuePair<string, FileInfo>(relativePath, file));
        }
        public void AddDirectory(DirectoryInfo directory)
        {
            _directories.Add(directory);
        }

        private void CollectDirectory(string root, DirectoryInfo directory, ZipFileInfoCollection zipFiles)
        {
            foreach (FileInfo file in directory.GetFiles())
            {
                CollectFile(file.DirectoryName.Replace(root, "") + "\\", file, zipFiles);
            }
            foreach (DirectoryInfo dir in directory.GetDirectories())
            {
                CollectDirectory(root, dir, zipFiles);
            }
        }

        private void CollectFile(string root, FileInfo file, ZipFileInfoCollection zipFiles)
        {
            using (FileStream originalFileStream = file.OpenRead())
            {
                if ((File.GetAttributes(file.FullName) &
                   FileAttributes.Hidden) != FileAttributes.Hidden & file.Extension != ".gz")
                {
                    using (MemoryStream ms = new MemoryStream())
                    {
                        byte[] buffer = new byte[10240];
                        int count = 0;
                        while ((count = originalFileStream.Read(buffer, 0, buffer.Length)) > 0)
                        {
                            ms.Write(buffer, 0, count);
                        }
后面还有 82 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。