ZIP压缩指定路径
- using Common;
- using Newtonsoft.Json;
- using Newtonsoft.Json.Linq;
- using Quartz;
- using Quartz.Impl;
- using StarbucksMessageService.Common;
- using System;
- using System.Collections.Generic;
- using System.Collections.Specialized;
- using System.Data;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Topshelf;
- using System.IO;
- using ICSharpCode.SharpZipLib.Zip;
- using System.Web;
- using ICSharpCode.SharpZipLib.Checksums;
- namespace StarbucksMessageService
- {
- class Program
- {
- static void Main(string[] args)
- {
- DAL dal = new DAL();
- service ser=new service();
- Console.WriteLine("输入需要导出的分类code");
- //分类Code
- string code = Console.ReadLine();
- if (code == "")
- {
- code = "491dc61d999a414f86a4fe16933ce1df";
- }
- DataTable dt = dal.getDataSetfile(code).Tables[];
- Console.WriteLine("当前文件总数:"+dt.Rows.Count);
- ////导出数量
- //int classifyCount = int.Parse(Console.ReadLine());
- Console.WriteLine("按多少份分别导出?(输入0则导出全部)");
- //部分区间
- int part = int.Parse(Console.ReadLine());
- //获取数据库数据
- //总数
- int DtCount = dt.Rows.Count;
- //需要分的次数
- int times =;
- if (part != )
- {
- times = (DtCount + part - ) / part;
- }
- string ZipedFile = "/测试ZIP.zip";// "C:\\ExportFolder\\测试ZIP.zip";
- string path= Path.GetFullPath("../ExportFolder");
- string ZipName = string.Empty;
- var crc = new Crc32();
- MemoryStream ms = new MemoryStream();
- Encoding gb2312 = Encoding.GetEncoding("gb2312"); //对方英文服务器 进行转码
- ICSharpCode.SharpZipLib.Zip.ZipConstants.DefaultCodePage = gb2312.CodePage;
- ZipOutputStream zos = null;
- FileStream fs = null;
- // byte[] buffer = null;
- System.IO.BinaryReader br = null;
- try
- {
- if (dt.Rows.Count > )
- {
- ////测试数据
- //DataRow dr1 = dt.NewRow();
- //for (int d = 0; d < 5000; d++)
- //{
- // dr1["number"] = dt.Rows[5][0].ToString();
- // dr1["Emp_Code"] = dt.Rows[5][1].ToString();
- // dr1["applicantDeptName"] = dt.Rows[5][2].ToString();
- // dr1["serialNumber"] = dt.Rows[5][3].ToString();
- // dr1["fileName"] = dt.Rows[5][4].ToString();
- // dr1["filePath"] = dt.Rows[5][5].ToString();
- // dt.Rows.Add(dr1.ItemArray);
- //}
- for (int i = ; i < dt.Rows.Count; i++)
- {
- string title = dt.Rows[i]["fileName"].ToString();
- string houzhui = Path.GetExtension(title);
- title = Path.GetFileNameWithoutExtension(title);
- //上海咖啡店_s57155_SJ201904160001(1).jpg
- string NewName = dt.Rows[i]["applicantDeptName"].ToString() + "_" + dt.Rows[i]["Emp_Code"].ToString() + "_" + dt.Rows[i]["serialNumber"].ToString() + "(" + (i + ) + ")" + houzhui;
- dt.Rows[i]["fileName"] = NewName;
- }
- Logger.Log.Debug("datable总数" + dt.Rows.Count);
- //part 等于0则直接导出全部
- if (part == )
- {
- //判断文件是否存在
- if (!Directory.Exists(path))
- {
- Directory.CreateDirectory(path);
- }
- //判断文件是否存在
- if (File.Exists((path + ZipedFile)))
- {
- File.Delete((path + ZipedFile));
- }
- zos = new ZipOutputStream(File.Create((path + ZipedFile)));
- int row = ;
- int a = ;
- //List<USP_getZIPlist> list = service.ListConvertToModel(dt);
- ////重命名 店名+店号+单号+流水号
- //Parallel.ForEach(list, (i) =>
- //{
- // try
- // {
- // i
- // Logger.Log.Debug(i["filePath"].ToString());
- // _error = i["fileName"].ToString();
- // fs = new FileStream(dr["filePath"].ToString(), System.IO.FileMode.Open);//文件地址、
- // // fs = new FileStream(filepath, System.IO.FileMode.Open);//文件地址
- // br = new BinaryReader((Stream)fs);
- // int size = 1024;
- // byte[] buffer = br.ReadBytes(size);
- // fs.Seek(size * (row - 1), System.IO.SeekOrigin.Begin);
- // ZipEntry entry = new ZipEntry(dr["fileName"].ToString());//文件名
- // //ZipEntry entry = new ZipEntry(filename);//文件名
- // zos.PutNextEntry(entry);//UTF-8
- // int extractCount = 0;
- // while (true)
- // {
- // size = fs.Read(buffer, 0, buffer.Length);
- // if (size > 0)
- // {
- // zos.Write(buffer, 0, size);
- // zos.Flush();
- // }
- // else
- // {
- // break;
- // }
- // extractCount += size;
- // }
- // // zos.Write(buffer, 0, buffer.Length);
- // }
- // catch (Exception ex)
- // {
- // throw;
- // }
- // finally
- // {
- // if (fs != null) fs.Close();
- // }
- // Console.WriteLine(a++);
- // //row++;
- //});
- foreach (DataRow dr in dt.Rows)
- {
- try
- {
- Logger.Log.Debug(dr["filePath"].ToString());
- _error = dr["fileName"].ToString();
- if (File.Exists(dr["filePath"].ToString()))
- {
- fs = new FileStream(dr["filePath"].ToString(), System.IO.FileMode.Open);//文件地址、
- // fs = new FileStream(filepath, System.IO.FileMode.Open);//文件地址
- br = new BinaryReader((Stream)fs);
- int size = ;
- byte[] buffer = br.ReadBytes(size);
- fs.Seek(size * (row - ), System.IO.SeekOrigin.Begin);
- ZipEntry entry = new ZipEntry(dr["fileName"].ToString());//文件名
- //ZipEntry entry = new ZipEntry(filename);//文件名
- zos.PutNextEntry(entry);//UTF-8
- int extractCount = ;
- while (true)
- {
- size = fs.Read(buffer, , buffer.Length);
- if (size > )
- {
- zos.Write(buffer, , size);
- zos.Flush();
- }
- else
- {
- break;
- }
- extractCount += size;
- }
- }
- else
- {
- Console.WriteLine("单号:" + dr["serialNumber"].ToString() + ",文件:" + dr["filePath"].ToString() + ",不存在");
- }
- // zos.Write(buffer, 0, buffer.Length);
- }
- catch (Exception ex)
- {
- throw;
- }
- finally
- {
- if (fs != null) fs.Close();
- }
- Console.WriteLine("序号:"+a++);
- //row++;
- }
- if (zos != null) zos.Close();
- //HttpContext.Current.Response.ContentType = "application/octet-stream";
- //HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(ZipName + ".zip", System.Text.Encoding.UTF8));
- //HttpContext.Current.Response.AddHeader("Content-Length", ms.ToArray().Length.ToString());
- //HttpContext.Current.Response.BinaryWrite(ms.ToArray());
- //HttpContext.Current.Response.Flush();
- // HttpContext.Current.Response.End();
- }
- else
- {
- int begin=;
- int end=part;
- int row = ;
- int a = ;
- //根据次数分别导出ZIP
- for (int item = ; item <= times; item++)
- {
- ZipedFile = "/测试ZIP(" + item + ").zip";// "C:\\ExportFolder\\测试ZIP(" + item + ").zip";
- //判断文件是否存在
- if (!Directory.Exists(path))
- {
- Directory.CreateDirectory(path);
- }
- //判断文件是否存在
- if (File.Exists((path + ZipedFile)))
- {
- File.Delete((path + ZipedFile));
- }
- zos = new ZipOutputStream(File.Create((path + ZipedFile)));
- //每次循环根据固定份数打包 part
- DataRow [] dRow = dt.Select("number>" + begin + " and number<=" + end + "");
- foreach (DataRow dr in dRow)
- {
- try
- {
- Logger.Log.Debug(dr["filePath"].ToString());
- _error = dr["fileName"].ToString();
- if (File.Exists(dr["filePath"].ToString()))
- {
- fs = new FileStream(dr["filePath"].ToString(), System.IO.FileMode.Open);//文件地址、
- // fs = new FileStream(filepath, System.IO.FileMode.Open);//文件地址
- br = new BinaryReader((Stream)fs);
- int size = ;
- byte[] buffer = br.ReadBytes(size);
- fs.Seek(size * (row - ), System.IO.SeekOrigin.Begin);
- //byte[] buffer = br.ReadBytes((Int32)fs.Length);
- ZipEntry entry = new ZipEntry(dr["fileName"].ToString());//文件名
- //ZipEntry entry = new ZipEntry(filename);//文件名
- zos.PutNextEntry(entry);//UTF-8
- zos.Write(buffer, , buffer.Length);
- }
- else
- {
- Console.WriteLine("单号:" + dr["serialNumber"].ToString() + ",文件:" + dr["filePath"].ToString() + ",不存在");
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine("ZIP打包错误" + ex);
- }
- finally
- {
- if (fs != null) fs.Close();
- }
- Console.WriteLine("序号:" + a++);
- }
- if (zos != null) zos.Close();
- //每次循环 加上份数
- begin=begin+part;
- end=end+part;
- }
- }
- }
- }
- catch (Exception ex)
- {
- // context.Response.Write("<script>alert('" + _error + "文件不存在或被另一进程占用,文件下载终止')</script>");
- Console.WriteLine("ZIP打包错误" + ex);
- }
- finally
- {
- if (zos != null) zos.Close();
- ms.Dispose();
- }
- Console.ReadKey();
- }
- public static string _error { get; set; }
- }
- }
ZIP压缩指定路径的更多相关文章
- Zip文件压缩(加密||非加密||压缩指定目录||压缩目录下的单个文件||根据路径压缩||根据流压缩)
1.写入Excel,并加密压缩.不保存文件 String dcxh = String.format("%03d", keyValue); String folderFileName ...
- Python压缩指定文件及文件夹为zip
Python压缩指定的文件及文件夹为.zip 代码: def zipDir(dirpath,outFullName): """ 压缩指定文件夹 :param dirpat ...
- 利用WebUploader进行图片批量上传,在页面显示后选择多张图片压缩至指定路径【java】
WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览 ...
- java 压缩文件 传入文件数组,压缩文件,在指定路径下生成指定文件名的压缩文件
/** * 传入文件数组,压缩文件,在指定路径下生成指定文件名的压缩文件 * * @param files * 文件数组 * @param strZipName * 压缩文件路径及文件名 * @thr ...
- Zip 压缩和解压技术在 HTML5 中的应用
JSZip 是一款可以创建.读取.修改 .zip 文件的 javaScript 工具.在 web 应用中,免不了需要从 web 服务器中获取资源,如果可以将所有的资源都合并到一个 .zip 文件中,这 ...
- Zip 压缩、解压技术在 HTML5 浏览器中的应用
JSZip 是一款可以创建.读取.修改 .zip 文件的 javaScript 工具.在 web 应用中,免不了需要从 web 服务器中获取资源,如果可以将所有的资源都合并到一个 .zip 文件中,这 ...
- C#实现Zip压缩解压实例【转】
本文只列举一个压缩帮助类,使用的是有要添加一个dll引用ICSharpCode.SharpZipLib.dll[下载地址]. 另外说明一下的是,这个类压缩格式是ZIP的,所以文件的后缀写成 .zip. ...
- ZIP压缩文件夹中上个月的文件,并将备份文件拷贝到服务器
遍历文件夹的子文件夹下的所有文件,将上个月的文件集中到一起,然互压缩,并copy到服务器的映射磁盘. static void Main(string[] args) { //原始文件存放的位置 Dir ...
- PHP zip压缩文件及解压
PHP zip压缩文件及解压 利用ZipArchive 类实现 只有有函数.界面大家自己写 ZipArchive(PHP 5.3 + 已自带不需要安装dll) /** * 文件解压 * @param ...
随机推荐
- python实现Hbase
1. 下载thrift 作用:翻译python语言为hbase语言的工具 2. 运行时先启动hbase 再启动thrift,最后在pycharm中通过happybase包连接hbase 在hbase目 ...
- Beta(1/7)
鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...
- ISP PIPLINE (二) LensShading Correct
what is the LSC? lens shading 分为:Y-shading , color shading. 在讲LSC之前,我们先来理解一个重要的术语--CRA(Chief ray ang ...
- 2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest
A. Automatic Door 对于规律的点可以推公式计算,对于噪点则暴力计算,时间复杂度$O(m\log m)$. #include<stdio.h> #include<ios ...
- TypeScript系列 - 什么是TypeScript
看了很多关于TypeScript的文章,总体说来没有很好的,一个系统的学习TypeScript的资源. 接下来,我将给大家带来TypeScript的系列,让你和我一样,一步一步的学习TypeScrip ...
- 移动端滑动效果 swiper 4.0.7
<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8" ...
- python的array初识
from array import array """ 'b' signed char int 1 'B' unsigned char int 1 'u' Py_UNIC ...
- List GroupBy真实用法,Reflection(反射)用法,Enum用法,正则,搜索下拉布局
1.List GroupBy 用法 var _roomProducts = homesingProducts.GroupBy(t => t.RoomName); RoomedProducts ...
- MyISAM和Innodb区别,为什么?
事务支持 MyISAM不支持事务,而InnoDB支持. InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度, 所以最好是把多条SQL语句显 ...
- Wireshark简单使用教程3——附视频
视频https://www.bilibili.com/video/av35763613?from=search&seid=10176480091153063668 目录 抓取干净流量包的用处所 ...