C# 压缩文件

来源:互联网 发布:淘宝流量劫持 编辑:程序博客网 时间:2024/05/29 09:41

【【【【C#压缩文件】】】】
方法1:
 //【filepath想要压缩文件的地址】
 //【zippath输出压缩文件的地址】
 private void GetFileToZip(string filepath,string zippath)
 {

     FileStream fs = File.OpenRead(filepath);
            byte[] buffer = new byte[fs.Length];
            fs.Read(buffer, 0, buffer.Length);
            fs.Close();

            FileStream ZipFile = File.Create(zippath);
            ZipOutputStream ZipStream = new ZipOutputStream(ZipFile);
            ZipEntry ZipEntry = new ZipEntry(输出的文件名称);
            ZipStream.PutNextEntry(ZipEntry);
            ZipStream.SetLevel(6);

            ZipStream.Write(buffer, 0, buffer.Length);
            ZipStream.Finish();
            ZipStream.Close();
 }
方法2:
  private void FileToZip(string path,string address)
        {
            string name = openFileDialog1.FileName.Substring(openFileDialog1.FileName.LastIndexOf("//")+1);
            FileStream StreamToZip = new FileStream(path, FileMode.Open, FileAccess.Read);
            FileStream ZipFile = File.Create(address);
            ZipOutputStream ZipStream = new ZipOutputStream(ZipFile);
            //压缩文件
            ZipEntry ZipEntry = new ZipEntry(name);
            ZipStream.PutNextEntry(ZipEntry);
            ZipStream.SetLevel(6);                                      
            byte[] buffer = new byte[StreamToZip.Length];
            StreamToZip.Read(buffer, 0, Convert.ToInt32(StreamToZip.Length));
            ZipStream.Write(buffer, 0, Convert.ToInt32(StreamToZip.Length));
            ZipStream.Finish();
            ZipStream.Close();
            StreamToZip.Close();

        }
【【【【【【C#解压文件】】】】】】
 private void ZipToFile(string path, string addres)
        {
            ZipInputStream s = new ZipInputStream(File.OpenRead(path));
            ZipEntry fileEntry;
            while ((fileEntry = s.GetNextEntry()) != null)
            {
                string filename = Path.GetFileName(fileEntry.Name);
                if (filename != "")
                {
                    filename = addres + "//" + filename;
                    FileStream streamWriter = File.Create(filename);
                    int size = 2048;
                    byte[] buffer = new byte[size];

                    size = s.Read(buffer, 0, size);
                    streamWriter.Write(buffer, 0, size);
                    streamWriter.Close();                  
                }
            }
            s.Close();
        }
【【【【【【C#压缩目录】】】】】】
方法1:
 //【arg[0]要压缩的目录】
 //【arg[1]输出的压缩文件】
    private void DirectoryToZip(string path, string address)
           {
             //获取当前文件夹中所有的文件
             string[] filenames = Directory.GetFiles(path); 
             Crc32 crc = new Crc32();
             //创建输出文件(ZIP格式的文件)
             ZipOutputStream zos = new ZipOutputStream(File.Create(address));
             zos.SetLevel(6);
             //遍历所有的文件
             foreach (string name in filenames)
             {
                 FileStream fs = File.OpenRead(name);
                 byte[] buffer = new byte[fs.Length];
                //读取文件
                 fs.Read(buffer, 0, Convert.ToInt32(fs.Length));
                 //获取文件的文件名称和后缀名
                 string file = Path.GetFileName(name);
                 //输出文件的名称
                 ZipEntry entry = new ZipEntry(file);               
                 crc.Reset();
                 crc.Update(buffer);
                 entry.Crc = crc.Value;
                 zos.PutNextEntry(entry);
                 zos.Write(buffer, 0, Convert.ToInt32(fs.Length));
                 fs.Close();
             }
             zos.Finish();
             zos.Close();
          }

 

【【【【【【【【C#读取压缩文件(将压缩文件转换为二进制)】】】】】】】】
 private void GetZipToByte(){
     string path = @"C:/Documents and Settings/Administrator/桌面/文件.rar";
            FileStream fs = new FileStream(path, FileMode.Open);
            bytes = new byte[fs.Length];
            int count = Convert.ToInt32(fs.Length);
            fs.Read(bytes, 0, count);
 }
【【【【【【【【C#将二进制转换为压缩文件】】】】】】】】
 private void GetByteToZip()
 {
     string path = @"F:/dom.rar";//压缩文件的地址
     File.WriteAllBytes(path, bytes);
 }

原创粉丝点击