/// <summary> /// 压缩(支持 zip、rar、7z),默认zip /// </summary> /// <param name="dirPath">需要压缩的目录</param> /// <param name="zipFile">文件的绝对路径,如果不指定,将保存到当前压缩的目录下</param> public static string Zip(string dirPath, string zipFile = "") { if (!Directory.Exists(dirPath)) { throw new DirectoryNotFoundException("参数[dirPath]不是一个有效的文件夹路径"); } if (!zipFile.IsNullOrEmpty() && !(new string[] { ".zip", ".rar", ".7z" }.Contains(Path.GetExtension(zipFile).ToLower()))) { throw new DirectoryNotFoundException("文件名格式不正确"); } if (zipFile.IsNullOrEmpty()) { zipFile = FileUtils.Combine(dirPath, StringUtils.GetNewFileName() + ".zip"); } //解决中文乱码问题 var options = new SharpCompress.Writers.WriterOptions(CompressionType.Deflate) { ArchiveEncoding = new ArchiveEncoding { Default = Encoding.GetEncoding("utf-8") } }; using (var archive = ZipArchive.Create()) { archive.AddAllFromDirectory(dirPath); archive.SaveTo(zipFile, options); return(zipFile); } }
/// <summary> /// Compress exported data /// </summary> /// <returns>Process results model</returns> public Models.Common.ProcessResultModel Compress() { var stopwatch = new System.Diagnostics.Stopwatch(); if (this.Config.Format == "d" && this.Config.TarDir) { stopwatch.Start(); // Compress using (var archive = TarArchive.Create()) { var mode = new SharpCompress.Writers.WriterOptions(SharpCompress.Common.CompressionType.None); archive.AddAllFromDirectory(this.File); archive.SaveTo(this.File + ".tar", mode); } // Delete Directory.Delete(this.File, true); this.File += ".tar"; stopwatch.Stop(); } return(new Models.Common.ProcessResultModel() { Duartion = stopwatch.Elapsed }); }
/// <summary> /// 压缩文件夹 /// </summary> /// <param name="fromFileDirectory">压缩文件夹路径</param> /// <param name="outFilePath">压缩后路径</param> public static void Zips(string fromFileDirectory, string outFilePath) { //解决中文乱码问题 SharpCompress.Common.ArchiveEncoding ArchiveEncoding = new SharpCompress.Common.ArchiveEncoding(); ArchiveEncoding.Default = Encoding.GetEncoding("utf-8"); SharpCompress.Writers.WriterOptions options = new SharpCompress.Writers.WriterOptions(CompressionType.Deflate); options.ArchiveEncoding = ArchiveEncoding; using (var archive = ZipArchive.Create()) { archive.AddAllFromDirectory(fromFileDirectory); using (var zip = File.OpenWrite(outFilePath)) archive.SaveTo(zip, options); } }
/// <summary> /// Compress directory with Tar to file-system /// </summary> /// <param name="path">Path </param> /// <returns>Path to archive</returns> public static string Compress(string path) { if (Generics.StringExtensions.IsEmpty(path)) { return(string.Empty); } using (var archive = TarArchive.Create()) { var gzip = new SharpCompress.Writers.WriterOptions(SharpCompress.Common.CompressionType.GZip); path = path.Trim().TrimEnd('.'); archive.AddAllFromDirectory(path); archive.SaveTo(path + ".tar.gz", gzip); return(path + ".tar.gz"); } }
public static void ExportWord(string outputPath, string outputFile, IEnumerable <Datas> datases) { //先确定文件数 //根据测区来分文件 var files = datases.GroupBy(a => a.Regionalcode); var datetime = DateTime.Now; string date = datetime.Year.ToString() + datetime.Month.ToString("00") + datetime.Day.ToString("00"); List <string> outFiles = new List <string>(); foreach (var f in files) { string filename = string.Format("{0}-加密锁授权申请表-{1}-{2}.doc", date, f.ElementAt(0).Compname, f.ElementAt(0).Regionalname); var destFile = Path.Combine(outputPath, filename); outFiles.Add(destFile); //将输出文件路径存放 File.Copy(modelDoc, destFile, true); //复制文件 var datas = f.ElementAt(0).Clone() as Datas; //合并软件名称 string softs = string.Empty; var gp = f.GroupBy(a => a.Softwarename); foreach (var g in gp) { softs += g.Key + ","; } softs = softs.TrimEnd(','); datas.Softwarename = softs; Document doc = new Document(destFile); DocumentBuilder db = new DocumentBuilder(doc); WriteDoc(doc, db, datas); //锁编号 string dogCode = string.Empty; foreach (var d in f) { dogCode += d.Dogcode + ";"; } dogCode = dogCode.TrimEnd(';'); db.MoveToBookmark("dogcode"); var run = new Run(doc, dogCode); run.Font.Size = 14; run.Font.Color = System.Drawing.Color.Blue; db.InsertNode(run); //备注 string remark = string.Empty; //区分新领取和非新领取的 var newget = f.Where(p => p.Servicetype.Contains("新领取")); var oldget = f.Except(newget); //处理新领取的情况 var services = newget.GroupBy(a => a.Servicetype); foreach (var s in services) { var softtypes = s.GroupBy(a => a.Softwarename); foreach (var st in softtypes) { var dogt = st.GroupBy(a => a.Dogtype); foreach (var d in dogt) { remark += string.Format("{0}{1}{2}个({3});", s.Key, d.Key, d.Count(), st.Key); } } } var dt = oldget.GroupBy(a => a.Dogtype); foreach (var d in dt) { var st = d.GroupBy(a => a.Servicetype); foreach (var s in st) { remark += string.Format("{0}{1}{2}个;", d.Key, s.Key, s.Count()); } } remark = remark.TrimEnd(';'); db.MoveToBookmark("remark"); db.InsertNode(new Run(doc, remark)); doc.Save(destFile, Aspose.Words.SaveFormat.Doc); } //将文件压缩 string output = Path.Combine(outputPath, outputFile); Stream dst = new FileStream(output, FileMode.Create); //解决中文乱码问题 ArchiveEncoding ArchiveEncoding = new ArchiveEncoding(); ArchiveEncoding.Default = Encoding.GetEncoding("utf-8"); SharpCompress.Writers.WriterOptions options = new SharpCompress.Writers.WriterOptions(CompressionType.Deflate); options.ArchiveEncoding = ArchiveEncoding; using (var archive = ZipArchive.Create()) { foreach (var f in outFiles) { FileInfo fi = new FileInfo(f); archive.AddEntry(fi.Name, fi.OpenRead(), true); } archive.SaveTo(dst, options); dst.Close(); } dst.Dispose(); //删除生成的单个文件 foreach (var f in outFiles) { File.Delete(f); } }