相关文章推荐
任性的青蛙  ·  android studio ...·  2 周前    · 
踏实的胡萝卜  ·  th:if condition ...·  2 月前    · 
打酱油的书签  ·  Parameter with that ...·  5 月前    · 
一身肌肉的泡面  ·  QFramelessWidget ...·  11 月前    · 
月球上的匕首  ·  php - linux ...·  1 年前    · 
var len = strFile.Length; var strlen = strFile[len - 1]; if (strFile[strFile.Length - 1] != Path.DirectorySeparatorChar) strFile += Path.DirectorySeparatorChar; ZipOutputStream outstream = new ZipOutputStream(File.Create(strZip)); outstream.SetLevel(6); zip(strFile, outstream, strFile); outstream.Finish(); outstream.Close(); public void zip(string strFile, ZipOutputStream outstream, string staticFile) if (strFile[strFile.Length - 1] != Path.DirectorySeparatorChar) strFile += Path.DirectorySeparatorChar; Crc32 crc = new Crc32(); //获取指定目录下所有文件和子目录文件名称 string[] filenames = Directory.GetFileSystemEntries(strFile); //遍历文件 foreach (string file in filenames) if (Directory.Exists(file)) zip(file, outstream, staticFile); //否则,直接压缩文件 //打开文件 FileStream fs = File.OpenRead(file); //定义缓存区对象 byte[] buffer = new byte[fs.Length]; //通过字符流,读取文件 fs.Read(buffer, 0, buffer.Length); //得到目录下的文件(比如:D:\Debug1\test),test string tempfile = file.Substring(staticFile.LastIndexOf("\\") + 1); ZipEntry entry = new ZipEntry(tempfile); entry.DateTime = DateTime.Now; entry.Size = fs.Length; fs.Close(); crc.Reset(); crc.Update(buffer); entry.Crc = crc.Value; outstream.PutNextEntry(entry); //写文件 outstream.Write(buffer, 0, buffer.Length); [ActionMethod(Title = "test", Author = "xhc", Created = "2019-08-24")] public void buildPackage(string companyName, string name) string sourcePath = @"D:\xxx\projects\xxx\src\trunk\demo\"; string destPath = @"D:\xxx\projects\xxx\src\trunk\output\"; // 替换文件夹路径,创建目标文件夹 string[] getsourceDictionary = System.IO.Directory.GetDirectories(sourcePath, "*.*", SearchOption.AllDirectories); string[] getsourceFiles = System.IO.Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories); Dictionary replaceMap = new Dictionary(); replaceMap.Add("{CompanyName}", companyName); replaceMap.Add("{Name}", name); replaceMap.Add(sourcePath, destPath); foreach (var fullDictionaryPath in getsourceDictionary) string destDictionary = fullDictionaryPath; foreach (var replaceItem in replaceMap) destDictionary = fullDictionaryPath.Replace(sourcePath, destPath); System.IO.Directory.CreateDirectory(destDictionary); // 替换文件内容,创建目标文件 foreach (var fullFilePath in getsourceFiles) string newFilePath = fullFilePath; foreach (var replaceItem in replaceMap) newFilePath = newFilePath.Replace(replaceItem.Key, replaceItem.Value); File.Copy(fullFilePath, newFilePath); string getFileContent = File.ReadAllText(newFilePath); foreach (var replaceItem in replaceMap) getFileContent = getFileContent.Replace(replaceItem.Key, replaceItem.Value); FileStream fs = new FileStream(newFilePath, FileMode.Open, FileAccess.Write); StreamWriter sw = new StreamWriter(fs); //把替换后的文本内容存到文本中 sw.WriteLine(getFileContent); sw.Close(); fs.Close(); string[] strs = new string[2]; //待压缩文件目录 strs[0] = @"D:\xxx\projects\xxx\src\trunk\output"; //压缩后的目标文件 strs[1] = @"D:\xxx\projects\xxx\src\trunk\output.zip"; ZipFloClass zc = new ZipFloClass(); zc.ZipFile(strs[0], strs[1]); this.ReturnData("ok"); public class ZipFloClass { public void ZipFile(string strFile, string strZip) { var len = strFile.Length; var strlen = strFile[... //目标 文件夹 string fileDirPath = "/Downloads/试题" + userId + "_" + courseId; string downPath = Server.MapPath(fileDirPath); public static void MoveFolder(string sourcePath, string destPath) if (Directory.Exists(sourcePath)) if (!Directory.Exists(destPath)) //目标目录不存在则创建 Directory.CreateDi
C# 文件 文件夹 压缩 和解压方法有很多,本文通过使用ICSharpCode.SharpZipLib.dll来进行 压缩 解压 1、 建一个winform项目,选择项目右键 管理NuGet程序包,搜索ICSharpCode.SharpZipLib,进行安装, 从微软官方文档查到了方法: https://docs.microsoft.com/en-us/visualstudio/ide/how-to-change-the-build-output-directory?view=vs-2019 右击项目属性 > Bu
文件 文件 是存储在存储介质上的数据集,是静态的,它具有名称和相应的 路径 。 流:当打开一个 文件 并对其进行读写时,该 文件 就成为流。流是动态的,它代表正在处于输入输出状态的数据,是一种特殊的数据结构。 流不仅是指打开的磁盘 文件 ,还可以是网络数据、控制台应用程序中的键盘输入和文本显示,甚至是内存缓存区的数据读写。 流的基本操作:读取、写入、定位; 操作流的类:1.Stream类(是所有流的抽象基类)2.TextRrader和TextWriter类及其派生类(TextReade
对包含 文件 或目录 路径 信息的 String 实例执行操作。 这些操作是以跨平台的方式执行的。 路径 是提供的 文件 或目录的位置的字符串。 路径 不一定指向磁盘; 上的位置例如, 路径 可能会映射到在内存中或在设备上的位置。 由当前平台确定 路径 的确切格式。 路径 可以包含绝对或相对的位置信息。 绝对 路径 完全指定的位置: 文件 或目录可以唯一地标识而不考虑当前的位置。 相对 路径 指定部分的位置: 定位使用相对 路径 指定的...