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. sklearn交叉验证-【老鱼学sklearn】

    交叉验证(Cross validation),有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法.于是可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证. 一开始 ...

  2. Cordova IOT Lesson003

    bot index.html <!DOCTYPE html> <html> <head> <title>Arduino蓝牙机械昆虫控制器</tit ...

  3. 关闭IIS开启自启

    关闭IIS开启自启 win+R输入services.msc 找到服务名称为World Wide Web Publishing Service 双击停止,右键禁用

  4. Git使用总结之修改了用户名之后git无法使用

    错误提示: unable to access 'http://git.ruitukeji.com:3000/RuiTu/heshanghui-andriod.git/': The requested ...

  5. 利用kibana插件对Elasticsearch进行批量操作

    #############批量获取################# #获取所有数据 GET _mget { "docs": [ {"_index":" ...

  6. Windows API教程文件系统

    本篇文章主要介绍了"Windows API教程文件系统",主要涉及到Windows API教程文件系统方面的内容,对于Windows API教程文件系统感兴趣的同学可以参考一下. ...

  7. Linux——目录和文件

    目录和文件

  8. 关于finally代码块是否一定被执行的问题

    一般来说,只要执行了try语句,finally就会执行 但是,有以下几种情况需要特殊考虑 具体例子看链接  点击这里 第一点 try代码块没有被执行,意思就是错误在try代码块之前就发生了. 第二点 ...

  9. tp3.2 模块单独配置数据库

    一 $User = M('test','tp_','mysql://root:123456@localhost/new_lezhu#utf8'); 1.test       -->表名 2.tp ...

  10. Linux之使用mount挂载ISO镜像

    Liunx系统中如果不方便把ISO镜像放在CDROM中进行挂载可以把对应ISO镜像上传至主机使用mount命令挂载 系统环境查看 上传镜像后挂载 mount -o loop ubuntu-18.04. ...