文章目录
简介
记录下C#开发控制台应用程序中常使用的功能函数
一、获取时间戳
static string GetTimestamp()
{
DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
long timeStamp = (long)(DateTime.Now - startTime).TotalMilliseconds;
return timeStamp.ToString();
}
二、删除某个文件夹下的所有文件及子文件夹
/// <summary>
/// 删除指定文件夹下的所有文件及文件夹
/// </summary>
/// <param name="path">指定需要删除的文件夹路径</param>
/// <param name="recursive">是否递归删除子文件夹,默认为true</param>
private static void DeleteFolder(string path,bool recursive=true)
{
if (!Directory.Exists(path)) { return; }
try
{
Directory.Delete(path, recursive);
}
catch (Exception ex)
{
string[] labFiles = Directory.GetFiles(path);
string[] labDirs = Directory.GetDirectories(path);
for (int i = 0; i < labFiles.Length; i++)
{
try
{
File.Delete(labFiles[i]);
}
catch (Exception e)
{}
}
if (recursive)
{
for (int j = 0; j < labDirs.Length; j++)
{
DeleteFolder(labDirs[j], recursive);
}
}
}
}
三、将某个文件夹压缩为zip
需要7za.exe程序,可从此百度网盘链接下载 ,提取码:TKBW
函数里的ZipExePath变量是7za.exe的路径,CommandProcess函数是开启一个进程,具体看后面对应的函数介绍
/// <summary>
/// zip all files from inputDir to outputDir
/// </summary>
/// <param name="inputDir"></param>
/// <param name="outputDir"></param>
/// <param name="zipName"></param>
private static bool ZipAllFiles(string inputDir, string outputDir, string zipName = "")
{
if (string.IsNullOrEmpty(zipName)) zipName = Path.GetFileNameWithoutExtension(inputPath);
if (!Directory.Exists(outputDir))
{
Directory.CreateDirectory(outputDir);
}
string ZipPath = Path.Combine(outputDir, zipName + ".zip");
try
{
string[] labDirs = Directory.GetDirectories(inputDir);//目录
string[] labFiles = Directory.GetFiles(inputDir);//文件
if (labFiles.Length > 0)
{
for (int i = 0; i < labFiles.Length; i++)
{
string zipCommand = " a \"" + ZipPath + "\" \"" + labFiles[i] + "\"";
CommandProcess("\"" + ZipExePath + "\"", zipCommand);
}
}
if (labDirs.Length > 0)
{
for (int j = 0; j < labDirs.Length; j++)
{
string zipCommand = " a \"" + ZipPath + "\" \"" + labDirs[j] + "\"\\";
CommandProcess("\"" + ZipExePath + "\"", zipCommand);
}
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
return false;
}
return true;
}
四、复制某个文件夹下的所有文件到其他文件夹
/// <summary>
/// copy files to new direction
/// </summary>
/// <param name="oldForder"></param>
/// <param name="newForder"></param>
/// <param name="recursive">Whether to recursively traverse subfolders.default is true</param>
static void CopyFiles(string oldForder, string newForder, bool recursive = true)
{
if (!Directory.Exists(oldForder)) return;
if (!Directory.Exists(newForder)) Directory.CreateDirectory(newForder);
string[] subFiles = Directory.GetFiles(oldForder);
for (int i = 0; i < subFiles.Length; i++)
{
File.Copy(subFiles[i], Path.Combine(newForder, Path.GetFileName(subFiles[i])));
}
if (recursive)
{
string[] subForder = Directory.GetDirectories(oldForder);
for (int i = 0; i < subForder.Length; i++)
{
CopyFiles(subForder[i], Path.Combine(newForder, Path.GetFileName(subForder[i])), recursive);
}
}
}
五、开启一个进程(执行指定的可执行文件)
比如打开记事本,打开unity某个项目等
/// <summary>
/// 开启一个进程
/// </summary>
/// <param name="Process_exe_path">可执行文件路径</param>
/// <param name="Arguments">命令行参数</param>
private static void CommandProcess(string Process_exe_path, string Arguments)
{
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = Process_exe_path;
p.StartInfo.Arguments = Arguments;
p.StartInfo.CreateNoWindow = false;
p.StartInfo.UseShellExecute = false;
p.Start();
p.WaitForExit();
}
六、获取当前exe的执行目录
static string currentWorkSpace = Directory.GetParent(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName).FullName;
七、获取指定文件的大小
/// <summary>
/// 获取文件大小
/// </summary>
/// <param name="sFullName"></param>
/// <returns></returns>
public static long GetFileSize(string sFullName)
{
long lSize = 0;
if (File.Exists(sFullName))
lSize = new FileInfo(sFullName).Length;
return lSize;
}