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压缩指定路径的更多相关文章

  1. Zip文件压缩(加密||非加密||压缩指定目录||压缩目录下的单个文件||根据路径压缩||根据流压缩)

    1.写入Excel,并加密压缩.不保存文件 String dcxh = String.format("%03d", keyValue); String folderFileName ...

  2. Python压缩指定文件及文件夹为zip

    Python压缩指定的文件及文件夹为.zip 代码: def zipDir(dirpath,outFullName): """ 压缩指定文件夹 :param dirpat ...

  3. 利用WebUploader进行图片批量上传,在页面显示后选择多张图片压缩至指定路径【java】

    WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览 ...

  4. java 压缩文件 传入文件数组,压缩文件,在指定路径下生成指定文件名的压缩文件

    /** * 传入文件数组,压缩文件,在指定路径下生成指定文件名的压缩文件 * * @param files * 文件数组 * @param strZipName * 压缩文件路径及文件名 * @thr ...

  5. Zip 压缩和解压技术在 HTML5 中的应用

    JSZip 是一款可以创建.读取.修改 .zip 文件的 javaScript 工具.在 web 应用中,免不了需要从 web 服务器中获取资源,如果可以将所有的资源都合并到一个 .zip 文件中,这 ...

  6. Zip 压缩、解压技术在 HTML5 浏览器中的应用

    JSZip 是一款可以创建.读取.修改 .zip 文件的 javaScript 工具.在 web 应用中,免不了需要从 web 服务器中获取资源,如果可以将所有的资源都合并到一个 .zip 文件中,这 ...

  7. C#实现Zip压缩解压实例【转】

    本文只列举一个压缩帮助类,使用的是有要添加一个dll引用ICSharpCode.SharpZipLib.dll[下载地址]. 另外说明一下的是,这个类压缩格式是ZIP的,所以文件的后缀写成 .zip. ...

  8. ZIP压缩文件夹中上个月的文件,并将备份文件拷贝到服务器

    遍历文件夹的子文件夹下的所有文件,将上个月的文件集中到一起,然互压缩,并copy到服务器的映射磁盘. static void Main(string[] args) { //原始文件存放的位置 Dir ...

  9. PHP zip压缩文件及解压

    PHP zip压缩文件及解压 利用ZipArchive 类实现 只有有函数.界面大家自己写 ZipArchive(PHP 5.3 + 已自带不需要安装dll) /** * 文件解压 * @param ...

随机推荐

  1. [转]sourcetree 安装-Windows

    https://blog.csdn.net/weialemon/article/details/78833419 sourcetree官网地址:https://www.sourcetreeapp.co ...

  2. ubantu16.04安装ns2.34 错误

    把ns2.34解压缩之后,sudo ./install 出现的错误: 错误一:安装NS2.34过程中出现如下的错误:tools/ranvar.cc: In member function ‘virtu ...

  3. XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Saratov

    A. Three Arrays 枚举每个$a_i$,双指针出$b$和$c$的范围,对于$b$中每个预先双指针出$c$的范围,那么对于每个$b$,在对应$c$的区间加$1$,在$a$处区间求和即可. 树 ...

  4. JS AJAX 跨域

    原因: 浏览器的同源策略,不允许AJAX 访问 其他接口 协议,域名,端口 一个不同 就跨域了  http 端口(80) https(443) 可以跨域的三个标签: 1. img : 打点统计,没有浏 ...

  5. js一些代码

    1判断金额正则 var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/; var money ...

  6. IDEA_构建Maven项目报错(1)

    构建报错: [ERROR] Plugin org.apache.maven.plugins:maven-archetype-plugin:RELEASE or one of its dependenc ...

  7. Windows系统JDK安装配置

    JDK和JRE的安装 打开java的官方网站,下载安装程序,版本根据自己情况选择: 双击安装程序: 点击"下一步": 此处推荐默认路径安装,如果自定义安装目录,则需记住自定义的安装 ...

  8. SSIS - 2.使用脚本任务弹出对话框

    步骤如下: 1.打开Visual Studio 2012或者SSDT工具->单击“文件”->选择"新建"打开创建新工程的对话框如下: 2.在"Business ...

  9. 数据仓库 - 2.数据仓库设计思路及ETL设计思路

    一.数据仓库构建思想 构造数据仓库有两种方式:一是自上而下,一是自下而上. Bill Inmon先生推崇“自上而下”的方式,即一个企业建立唯一的数据中心,就像一个数据的仓库,其中数据是经过整合.经过清 ...

  10. Selenium 3----WebDriver常用方法

    在学会定位元素的基础上,进行元素的操作. WebDriver常用方法: clear(): 清除文本. send_keys (value): 模拟按键输入. click(): 单击元素. submit( ...