文件夹和文件压缩

19 篇文章 0 订阅
        ///<summary>
        ///功能:压缩文件(暂时只压缩文件夹下一级目录中的文件,文件夹及其子级被忽略)
        ///</summary>
        ///<paramname="dirPath">被压缩的文件夹夹路径</param>
        ///<paramname="zipFilePath">生成压缩文件的路径,为空则默认与被压缩文件夹同一级目录,名称为:文件夹名+.zip</param>
        ///<paramname="err">出错信息</param>
        ///<returns>是否压缩成功</returns>
        publicboolZipFile(string dirPath,stringzipFilePath,outstringerr)
        {
           err = "";
            if(dirPath == string.Empty)
            {
               err = "要压缩的文件夹不能为空!";
               return false;
            }
            if(!Directory.Exists(dirPath))
            {
               err = "要压缩的文件夹不存在!";
               return false;
            }
            //压缩文件名为空时使用文件夹名+.zip
            if(zipFilePath == string.Empty)
            {
               if (dirPath.EndsWith("\\"))
               {
                   dirPath = dirPath.Substring(0, dirPath.Length - 1);
               }
               zipFilePath = dirPath + ".zip";
            }
 
            try
            {
               string[] filenames =Directory.GetFiles(dirPath);
               using (ZipOutputStreams =newZipOutputStream(File.Create(zipFilePath)))
               {
                   s.SetLevel(9);
                   byte[] buffer =newbyte[4096];
                   foreach (stringfilein filenames)
                   {
                        ZipEntry entry =newZipEntry(Path.GetFileName(file));
                        entry.DateTime = DateTime.Now;
                        s.PutNextEntry(entry);
                        using(FileStream fs =File.OpenRead(file))
                        {
                            intsourceBytes;
                            do
                            {
                                sourceBytes =fs.Read(buffer, 0, buffer.Length);
                                s.Write(buffer,0, sourceBytes);
                            } while(sourceBytes > 0);
                        }
                   }
                   s.Finish();
                   s.Close();
               }
            }
            catch(Exception ex)
            {
               err = ex.Message;
               return false;
            }
            returntrue;
        }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QZipWriter是一个可以用来进行文件夹文件压缩的方法。它是一个在Qt框架下提供的简单易用的压缩库。 首先,我们需要通过引入QZipWriter类来创建一个QZipWriter实例。例如,可以使用以下代码创建一个名为"compressed.zip"的ZIP文件: ```cpp QZipWriter zipWriter("compressed.zip"); ``` 接下来,我们可以通过调用QZipWriter的`addDirectory()`方法来将文件夹添加到ZIP文件中,或者通过`addFile()`方法来将文件添加到ZIP文件中。例如,以下代码将一个名为"folder"的文件夹添加到ZIP文件中: ```cpp zipWriter.addDirectory("folder"); ``` 或者,我们可以添加一个名为"file.txt"的文件到ZIP文件中,如下所示: ```cpp zipWriter.addFile("file.txt", "/path/to/file.txt"); ``` 在使用`addFile()`方法时,第一个参数是要在ZIP文件中显示的文件名称,而第二个参数是要添加到ZIP文件中的实际文件路径。 最后,在完成所有文件文件夹的添加后,我们应该调用`close()`方法来关闭QZipWriter实例,以便将所有数据写入ZIP文件中。以下是一个完整的例子: ```cpp QZipWriter zipWriter("compressed.zip"); zipWriter.addDirectory("folder"); zipWriter.addFile("file.txt", "/path/to/file.txt"); zipWriter.close(); ``` 通过这种方式,我们可以使用QZipWriter的addDirectory()和addFile()方法,轻松地对文件夹文件进行压缩。这使得在Qt应用程序中进行文件文件夹压缩变得非常简单和高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值