示例#1
0
        private List <FileInfo> GetFileList(string sDirectoryPath, PackingScope scope)
        {
            List <FileInfo> filesInfo = new List <FileInfo>();
            DirectoryInfo   dir       = new DirectoryInfo(sDirectoryPath);

            if (scope != PackingScope.Folder)
            {
                FileInfo[] files = dir.GetFiles();
                foreach (FileInfo fTemp in files)
                {
                    filesInfo.Add(fTemp);
                }
            }
            if (scope != PackingScope.File)
            {
                DirectoryInfo[] dirs = dir.GetDirectories();
                foreach (DirectoryInfo dirTemp in dirs)
                {
                    List <FileInfo> templist = GetFileList(dirTemp.FullName, PackingScope.All);
                    foreach (FileInfo fileTemp in templist)
                    {
                        filesInfo.Add(fileTemp);
                    }
                }
            }
            return(filesInfo);
        }
示例#2
0
        /// <summary>
        /// 把文件夹里面的文件为一个压缩包文件
        /// </summary>
        /// <param name="sDirectoryPath">需要打包的目录</param>
        /// <param name="FileName">打包之后保存的文件名称,如D:\packing.zip</param>
        /// <param name="scope">打包的范围</param>
        /// <returns></returns>
        public static bool ToFile(string sDirectoryPath, string FileName, PackingScope scope)
        {
            bool            result    = false;
            List <FileInfo> filesInfo = new List <FileInfo>();
            Crc32           crc       = new Crc32();
            ZipOutputStream s         = null;
            int             i         = 1;

            try
            {
                FileInfo filedd = new FileInfo(FileName);
                if (!Directory.Exists(filedd.Directory.FullName))
                {
                    Directory.CreateDirectory(filedd.Directory.FullName);
                }
                s = new ZipOutputStream(File.OpenWrite(FileName));
                s.SetLevel(9);

                DirectoryInfo mainDir = new DirectoryInfo(sDirectoryPath);
                filesInfo = GetFileList(mainDir.FullName, scope);
                foreach (FileInfo file in filesInfo)
                {
                    using (FileStream fs = File.OpenRead(file.FullName))
                    {
                        byte[] buffer = new byte[fs.Length];
                        fs.Read(buffer, 0, buffer.Length);
                        ZipEntry entry = new ZipEntry(ZipEntry.CleanName(file.FullName.Replace(mainDir.FullName, "")));
                        entry.DateTime     = DateTime.Now;
                        entry.Comment      = i.ToString();
                        entry.ZipFileIndex = i++;
                        entry.Size         = fs.Length;
                        fs.Close();
                        crc.Reset();
                        crc.Update(buffer);
                        entry.Crc = crc.Value;
                        s.PutNextEntry(entry);
                        s.Write(buffer, 0, buffer.Length);
                    }
                }
                s.Finish();
                s.Close();
                result = true;
            }

            catch (Exception ex)
            {
                result = false;
                throw new Exception(ex.Message);
            }
            finally
            {
                s.Close();
            }
            return(result);
        }
示例#3
0
        private static List <FileInfo> GetFileList(string sDirectoryPath, PackingScope scope)
        {
            List <FileInfo> filesInfo = new List <FileInfo>();
            DirectoryInfo   dir       = new DirectoryInfo(sDirectoryPath);

            if (FilterFileAndDir.Contains(dir.Name))
            {
                return(filesInfo);
            }
            if (scope != PackingScope.Folder)
            {
                FileInfo[] files = dir.GetFiles();
                foreach (FileInfo fTemp in files)
                {
                    if (FilterFileAndDir.Contains(fTemp.Name))
                    {
                        continue;
                    }
                    else
                    {
                        filesInfo.Add(fTemp);
                    }
                }
            }
            if (scope != PackingScope.File)
            {
                DirectoryInfo[] dirs = dir.GetDirectories();
                foreach (DirectoryInfo dirTemp in dirs)
                {
                    List <FileInfo> templist = GetFileList(dirTemp.FullName, PackingScope.All);
                    foreach (FileInfo fileTemp in templist)
                    {
                        if (FilterFileAndDir.Contains(fileTemp.Name))
                        {
                            continue;
                        }
                        else
                        {
                            filesInfo.Add(fileTemp);
                        }
                    }
                }
            }
            return(filesInfo);
        }