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 实例执行操作。 这些操作是以跨平台的方式执行的。
路径
是提供的
文件
或目录的位置的字符串。
路径
不一定指向磁盘; 上的位置例如,
路径
可能会映射到在内存中或在设备上的位置。 由当前平台确定
路径
的确切格式。
路径
可以包含绝对或相对的位置信息。 绝对
路径
完全指定的位置:
文件
或目录可以唯一地标识而不考虑当前的位置。 相对
路径
指定部分的位置: 定位使用相对
路径
指定的...