在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
最近客户要求把一个树型目录导出成文件夹套文件夹的结构,并提供下载功能,刚开始感觉功能比较容易实现就在最短的时间把基本功能搞定,当发布到服务器上之后发现直接在本应用程序中导出目录(下带ntko文档及附件)再进行压缩,程序直接卡死了!后来就想到了要做一window服务,只是客户给的时间太短,没办法先写一控制台程序生成一个exe文件,然后再调用这个exe文件,这样就可以缓解本程序压力了! 下面写一个测试项目 在调用exe端传过去一个要压缩的文件夹的路径,然后在控制台下获取该路径进行压缩,压缩完成之后返回压缩过后的文件夹路径或者返回一个成功与否的状态 1、返回路径 复制代码 代码如下: string path = @"E:\测试项目\201303\TestWindowsService\ca\bin\Debug\ca.exe"; string fileName = path; Process p = new Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.FileName = fileName; p.StartInfo.CreateNoWindow = true; p.StartInfo.Arguments = @"D:\zhai\aaa\安置帮教";//参数以空格分隔,如果某个参数为空,可以传入”” p.Start(); p.WaitForExit(); 控制台下代码: 复制代码 代码如下: static void Main(string[] args) { //接收传过来的待压缩文件路径 string url = ""; //返回压缩过后的文件路径 string retUrl = ""; if (!string.IsNullOrEmpty(args[0])) { url = args[0]; } //此处引用了一个压缩文件的dll using Ionic.Zip; using (ZipFile zf = new ZipFile(System.Text.Encoding.Default)) { zf.AddDirectory(url); zf.Save(@"D:\zhai\aaa\"+DateTime.Now.ToString("yyyyMMddHHmmss")+".zip"); retUrl = @"D:\zhai\aaa\"+DateTime.Now.ToString("yyyyMMddHHmmss")+".zip"; } Console.Write(retUrl); } 2、返回一个状态 复制代码 代码如下: //Process myProcess = new Process(); //string fileName = path; //myProcess.Start(); //while (!myProcess.HasExited) // myProcess.WaitForExit(); //} 控制台下 复制代码 代码如下: static int Main(string[] args) { int i=0; if (!string.IsNullOrEmpty(args[0])) { url = args[0]; } if(url) { i=1; } return i; } |
请发表评论