【.Net 6.0--通用帮助类--FileHelper】

前言

文件操作帮助类,包含下表中的方法:

方法名方法解释
GetFileNames获取指定目录中所有文件列表
GetDirectories获取指定目录中的子目录列表
GetDirectoryCreateTime获取文件夹的创建时间
GetFileCreateTime获取文件的创建时间
GetFileSize获取一个文件的长度,单位为Byte
GetFileSizeByKB获取一个文件的长度,单位为KB
GetFileSizeByMB获取一个文件的长度,单位为MB
GetDirectoryLength获取一个文件夹的长度,单位为Byte
FileRename文件重命名
DirRename文件夹重命名
Copy将源文件的内容复制到目标文件中(文件复制)
CopyDirectory将文件夹复制到指定目录(文件夹复制)
FileMove将文件移动到指定目录(文件剪切)
DirMove将文件夹移动到指定目录 (文件夹剪切)
DeleteFile删除指定文件
DeleteDirectory删除指定文件夹
方法过多,就不一一赘述,需要的同学自行查看

代码示例

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace VW.API.Common.Utils
{/// <summary>/// FileHelper 的摘要说明:文件(夹)帮助类/// </summary>public static class FileHelper{#region 获取指定目录中的文件列表/// <summary>  /// 获取指定目录中所有文件列表  /// </summary>  /// <param name="directoryPath">指定目录的绝对路径</param>          public static string[] GetFileNames(string directoryPath){try{//如果目录不存在,则抛出异常  if (!IsExistDirectory(directoryPath)){Directory.CreateDirectory(directoryPath);}//获取文件列表  return Directory.GetFiles(directoryPath);}catch (Exception){return new string[] { };}}/// <summary>  /// 获取指定目录及子目录中所有文件列表  /// </summary>  /// <param name="directoryPath">指定目录的绝对路径</param>  /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字符。  /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。</param>  /// <param name="isSearchChild">是否搜索子目录</param>  public static string[] GetFileNames(string directoryPath, string searchPattern, bool isSearchChild){//如果目录不存在,则抛出异常  if (!IsExistDirectory(directoryPath)){return new string[] { };}try{return Directory.GetFiles(directoryPath, searchPattern, isSearchChild ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly);}catch{return new string[] { };}}#endregion#region 获取指定目录中的子目录列表/// <summary>  /// 获取指定目录中所有子目录列表,若要搜索嵌套的子目录列表,请使用重载方法.  /// </summary>  /// <param name="directoryPath">指定目录的绝对路径</param>          public static string[] GetDirectories(string directoryPath){try{if (!IsExistDirectory(directoryPath))return new string[] { };elsereturn Directory.GetDirectories(directoryPath);}catch (Exception) { throw; }}/// <summary>  /// 获取指定目录及子目录中所有子目录列表  /// </summary>  /// <param name="directoryPath">指定目录的绝对路径</param>  /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字符。  /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。</param>  /// <param name="isSearchChild">是否搜索子目录</param>  public static string[] GetDirectories(string directoryPath, string searchPattern, bool isSearchChild){try{return Directory.GetDirectories(directoryPath, searchPattern, isSearchChild ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly);}catch{throw null;}}#endregion#region 从目录的绝对路径中获取文件夹名/// <summary>  /// 从目录的绝对路径中获取文件夹名  /// </summary>  /// <param name="directoryPath">文件夹的绝对路径</param>          public static string GetDirectoryName(string directoryPath){//获取文件的名称  DirectoryInfo directoryInfo = new DirectoryInfo(directoryPath);return directoryInfo.Name;}#endregion#region 获取文件夹的创建时间/// <summary>  /// 获取文件夹的创建时间  /// </summary>  /// <param name="directoryPath">文件夹的绝对路径</param>          public static DateTime GetDirectoryCreateTime(string directoryPath){//获取文件夹的创建时间  DirectoryInfo directoryInfo = new DirectoryInfo(directoryPath);return directoryInfo.CreationTime;}#endregion#region 获取文件的创建时间/// <summary>  /// 获取文件的创建时间/// </summary>  /// <param name="filePath">文件的绝对路径</param>          public static DateTime GetFileCreateTime(string filePath){//获取文件的创建时间FileInfo fileInfo = new FileInfo(filePath);return fileInfo.CreationTime;}#endregion#region 获取一个文件的长度/// <summary>  /// 获取一个文件的长度,单位为Byte  /// </summary>  /// <param name="filePath">文件的绝对路径</param>          public static long GetFileSize(string filePath){try{//创建一个文件对象  FileInfo fi = new FileInfo(filePath);//获取文件的大小  return (long)fi.Length;}catch (Exception) { throw; }}/// <summary>  /// 获取一个文件的长度,单位为KB  /// </summary>  /// <param name="filePath">文件的路径</param>          public static double GetFileSizeByKB(string filePath){try{//创建一个文件对象  FileInfo fi = new FileInfo(filePath);long size = fi.Length / 1024;//获取文件的大小  return double.Parse(size.ToString());}catch (Exception) { throw; }}/// <summary>  /// 获取一个文件的长度,单位为MB  /// </summary>  /// <param name="filePath">文件的路径</param>          public static double GetFileSizeByMB(string filePath){try{//创建一个文件对象  FileInfo fi = new FileInfo(filePath);long size = fi.Length / 1024 / 1024;//获取文件的大小  return double.Parse(size.ToString());}catch (Exception) { throw; }}#endregion#region 获取一个文件夹的长度/// <summary>/// 获取一个文件夹的长度/// </summary>/// <param name="dirPath">路径</param>/// <returns></returns>public static long GetDirectoryLength(string dirPath){try{long len = 0;//定义一个DirectoryInfo对象DirectoryInfo di = new DirectoryInfo(dirPath);//通过GetFiles方法,获取di目录中的所有文件的大小foreach (FileInfo fi in di.GetFiles()){len += fi.Length;}//获取di中所有的文件夹,并存到一个新的对象数组中,以进行递归DirectoryInfo[] dis = di.GetDirectories();if (dis.Length > 0){for (int i = 0; i < dis.Length; i++){len += GetDirectoryLength(dis[i].FullName);}}return len;}catch (Exception) { throw; }}#endregion#region 文件重命名/// <summary>  /// 文件重命名  /// </summary>  /// <param name="sourceFilePath">源文件的绝对路径</param>  /// <param name="destFilePath">目标文件的绝对路径</param>  public static void FileRename(string sourceFilePath, string destFilePath){try{if (IsExistFile(sourceFilePath)){FileInfo fi = new FileInfo(sourceFilePath);fi.MoveTo(destFilePath, true);}}catch (Exception) { throw; }}#endregion#region 文件夹重命名/// <summary>  /// 文件夹重命名  /// </summary>  /// <param name="sourceDirPath">源文件夹的绝对路径</param>  /// <param name="destDirPath">目标文件夹的绝对路径</param>  public static void DirRename(string sourceDirPath, string destDirPath){try{DirectoryInfo di = new DirectoryInfo(sourceDirPath);di.MoveTo(destDirPath);}catch (Exception) { throw; }}#endregion#region 将现有文件的内容复制到新文件中/// <summary>/// 获取当天日期/// </summary>/// <returns></returns>private static string GetDate(){DateTime dt = DateTime.Now;// 年string year = string.Format("{0:D4}", dt.Year);// 月string month = string.Format("{0:D2}", dt.Month);// 日string day = string.Format("{0:D2}", dt.Day);// 秒string millisecond = string.Format("{0:D4}", dt.Millisecond);// 年月日秒(201705311234)return year + month + day + millisecond;}/// <summary>  /// 将源文件的内容复制到目标文件中  /// </summary>  /// <param name="sourceFilePath">源文件的绝对路径</param>  /// <param name="destFilePath">目标文件的绝对路径</param>  /// <param name="overwrite">是否覆盖</param> public static void Copy(string sourceFilePath, string destFilePath, bool overwrite){try{string destDirPath = Path.GetDirectoryName(destFilePath);if (!Directory.Exists(destDirPath))Directory.CreateDirectory(destDirPath);if (overwrite){File.Copy(sourceFilePath, destFilePath, overwrite);}else{// 如果源文件和目标文件重名,则对目标文件加时间标签if (sourceFilePath == destFilePath){FileInfo fiDest = new FileInfo(destFilePath);string fileName = fiDest.Name.Replace(fiDest.Extension, "");string newFileName = fileName + "_" + GetDate();destFilePath = destFilePath.Replace(fileName, newFileName);}File.Copy(sourceFilePath, destFilePath);}}catch (Exception) { throw; }}#endregion#region 将文件移动到指定目录/// <summary>  /// 将文件移动到指定目录  /// </summary>  /// <param name="sourceFilePath">需要移动的源文件的绝对路径</param>  /// <param name="descDirectoryPath">移动到的目录的绝对路径</param>  public static void FileMove(string sourceFilePath, string descDirectoryPath){try{//获取源文件的名称  string sourceFileName = GetFileName(sourceFilePath);if (!IsExistDirectory(descDirectoryPath)){CreateDirectory(descDirectoryPath);}//如果目标中存在同名文件,则删除  if (IsExistFile(Path.Combine(descDirectoryPath, sourceFileName))){DeleteFile(Path.Combine(descDirectoryPath, sourceFileName));}//将文件移动到指定目录  File.Move(sourceFilePath, Path.Combine(descDirectoryPath, sourceFileName));}catch (Exception) { throw; }}#endregion#region 将文件夹移动到指定目录/// <summary>  /// 将文件夹移动到指定目录  /// </summary>  /// <param name="sourceDirPath">需要移动的源文件夹的绝对路径</param>  /// <param name="descDirectoryPath">移动到的目录的绝对路径</param>  public static void DirMove(string sourceDirPath, string descDirectoryPath){try{DirectoryInfo di = new DirectoryInfo(sourceDirPath);descDirectoryPath = descDirectoryPath + "/" + di.Name;if (!Directory.Exists(sourceDirPath))return;if (!Directory.Exists(descDirectoryPath))Directory.CreateDirectory(descDirectoryPath);string[] files = Directory.GetFiles(sourceDirPath);foreach (string formFileName in files){string fileName = Path.GetFileName(formFileName);string toFileName = Path.Combine(descDirectoryPath, fileName);File.Copy(formFileName, toFileName, true);}string[] fromDirs = Directory.GetDirectories(sourceDirPath);foreach (string fromDirName in fromDirs){string dirName = Path.GetFileName(fromDirName);string toDirName = Path.Combine(descDirectoryPath, dirName);DirMove(fromDirName, toDirName);}Directory.Delete(sourceDirPath, true);}catch (Exception) { throw; }}#endregion#region 将文件夹复制到指定目录public static void CopyDirectory(string srcPath, string destPath){try{DirectoryInfo dir = new DirectoryInfo(srcPath);FileSystemInfo[] fileinfo = dir.GetFileSystemInfos();foreach (FileSystemInfo i in fileinfo){if (i is DirectoryInfo){if (!Directory.Exists(destPath + "\\" + i.Name))Directory.CreateDirectory(destPath + "\\" + i.Name);CopyDirectory(i.FullName, destPath + "\\" + i.Name);}elseFile.Copy(i.FullName, destPath + "\\" + i.Name, true);}}catch (Exception) { throw; }}#endregion#region 删除指定文件/// <summary>  /// 删除指定文件  /// </summary>  /// <param name="filePath">文件的绝对路径</param>  public static void DeleteFile(string filePath){try{if (IsExistFile(filePath)){File.Delete(filePath);}}catch (Exception) { throw; }}#endregion#region 删除指定目录/// <summary>  /// 删除指定目录及其所有子目录  /// </summary>  /// <param name="directoryPath">指定目录的绝对路径</param>  public static void DeleteDirectory(string directoryPath){try{if (IsExistDirectory(directoryPath)){Directory.Delete(directoryPath, true);}}catch (Exception) { throw; }}#endregion#region 创建一个目录/// <summary>  /// 创建一个目录  /// </summary>  /// <param name="directoryPath">目录的绝对路径</param>  public static void CreateDirectory(string directoryPath){try{//如果目录不存在则创建该目录  if (!IsExistDirectory(directoryPath)){Directory.CreateDirectory(directoryPath);}}catch (Exception) { throw; }}#endregion#region 检测指定目录是否存在/// <summary>  /// 检测指定目录是否存在  /// </summary>  /// <param name="directoryPath">目录的绝对路径</param>          public static bool IsExistDirectory(string directoryPath){return Directory.Exists(directoryPath);}#endregion#region 检测指定文件是否存在/// <summary>  /// 检测指定文件是否存在,如果存在则返回true。  /// </summary>  /// <param name="filePath">文件的绝对路径</param>          public static bool IsExistFile(string filePath){return File.Exists(filePath);}#endregion#region 检测指定目录是否为空/// <summary>  /// 检测指定目录是否为空  /// </summary>  /// <param name="directoryPath">指定目录的绝对路径</param>          public static bool IsEmptyDirectory(string directoryPath){try{//判断是否存在文件  string[] fileNames = GetFileNames(directoryPath);if (fileNames.Length > 0){return false;}//判断是否存在文件夹  string[] directoryNames = GetDirectories(directoryPath);return directoryNames.Length <= 0;}catch{return false;}}#endregion#region 检测指定目录中是否存在指定的文件/// <summary>  /// 检测指定目录中是否存在指定的文件,若要搜索子目录请使用重载方法.  /// </summary>  /// <param name="directoryPath">指定目录的绝对路径</param>  /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字符。  /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。</param>          public static bool Contains(string directoryPath, string searchPattern){try{//获取指定的文件列表  string[] fileNames = GetFileNames(directoryPath, searchPattern, false);//判断指定文件是否存在  return fileNames.Length != 0;}catch{return false;}}/// <summary>  /// 检测指定目录中是否存在指定的文件  /// </summary>  /// <param name="directoryPath">指定目录的绝对路径</param>  /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字符。  /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。</param>   /// <param name="isSearchChild">是否搜索子目录</param>  public static bool Contains(string directoryPath, string searchPattern, bool isSearchChild){try{//获取指定的文件列表  string[] fileNames = GetFileNames(directoryPath, searchPattern, isSearchChild);//判断指定文件是否存在  return fileNames.Length != 0;}catch{return false;}}#endregion#region 创建一个文件/// <summary>  /// 创建一个文件。  /// </summary>  /// <param name="filePath">文件的绝对路径</param>  public static bool CreateFile(string filePath){try{//如果文件不存在则创建该文件  if (!IsExistFile(filePath)){//创建一个FileInfo对象  FileInfo file = new FileInfo(filePath);//文件夹不存在,创建文件夹if (!IsExistDirectory(file.Directory.FullName)){CreateDirectory(file.Directory.FullName);}//创建文件  FileStream fs = file.Create();//关闭文件流  fs.Close();}}catch{return false;}return true;}/// <summary>  /// 创建一个文件,并将字节流写入文件。  /// </summary>  /// <param name="filePath">文件的绝对路径</param>  /// <param name="buffer">二进制流数据</param>  public static bool CreateFile(string filePath, byte[] buffer){try{//如果文件不存在则创建该文件  if (!IsExistFile(filePath)){//创建一个FileInfo对象  FileInfo file = new FileInfo(filePath);//文件夹不存在,创建文件夹if (!IsExistDirectory(file.Directory.FullName)){CreateDirectory(file.Directory.FullName);}//创建文件  FileStream fs = file.Create();//写入二进制流  fs.Write(buffer, 0, buffer.Length);//关闭文件流  fs.Close();}}catch{return false;}return true;}/// <summary>  /// 创建一个文件,并将数据流写入文件。  /// </summary>  /// <param name="filePath">文件的绝对路径</param>  /// <param name="stream">数据流</param>  public static bool CreateFile(string filePath, Stream stream){try{//如果文件不存在则创建该文件  if (!IsExistFile(filePath)){//创建一个FileInfo对象  FileInfo file = new FileInfo(filePath);//文件夹不存在,创建文件夹if (!IsExistDirectory(file.Directory.FullName)){CreateDirectory(file.Directory.FullName);}//创建文件  FileStream fs = file.Create();byte[] buffer = new Byte[stream.Length];stream.Read(buffer, 0, buffer.Length);stream.Seek(0, SeekOrigin.Begin);//写入二进制流  fs.Write(buffer, 0, buffer.Length);//关闭文件流  fs.Close();}}catch (Exception){return false;}return true;}/// <summary>  /// 创建多个文件,并将数据流写入文件。  /// </summary>  /// <param name="rootDir">根目录</param>  /// <param name="files">文件名-数据流</param>  public static List<string> CreateFile(string rootDir, Dictionary<string, Stream> files, bool isRename = false){try{List<string> list = new List<string>();foreach (KeyValuePair<string, Stream> keyValue in files){if (isRename)//是否以时间戳命名重命名{string fileName = $"{CommonHelper.UnixTimeUidByDataTime(DateTime.Now)}{GetExtension(keyValue.Key)}";string filePath = Path.Combine(rootDir, fileName);if (!CreateFile(filePath, keyValue.Value)){throw new FileNotFoundException($"文件({keyValue.Key})生成失败。");}list.Add(fileName);}else{string fileName = keyValue.Key;string filePath = Path.Combine(rootDir, keyValue.Key);if (IsExistFile(filePath))fileName = $"({DateTime.Now.ObjToDateYMDHMS()}){keyValue.Key}";filePath = Path.Combine(rootDir, fileName);if (!CreateFile(filePath, keyValue.Value)){throw new FileNotFoundException($"文件({keyValue.Key})生成失败。");}list.Add(fileName);}}return list;}catch (Exception){throw;}}#endregion#region 获取文本文件的行数/// <summary>  /// 获取文本文件的行数  /// </summary>  /// <param name="filePath">文件的绝对路径</param>          public static int GetLineCount(string filePath){//将文本文件的各行读到一个字符串数组中  string[] rows = File.ReadAllLines(filePath);//返回行数  return rows.Length;}#endregion#region 获取文本文件的各行数据  /// <summary>  /// 获取文本文件的各行数据  /// </summary>  /// <param name="filePath">文件的绝对路径</param>          public static string[] GetAllLines(string filePath){//将文本文件的各行读到一个字符串数组中  string[] lines = File.ReadAllLines(filePath);//返回行数  return lines;}#endregion#region 向文本文件写入内容/// <summary>  /// 向文本文件中写入内容  /// </summary>  /// <param name="filePath">文件的绝对路径</param>  /// <param name="content">写入的内容</param>          public static void WriteText(string filePath, string content, Encoding encoding){//向文件写入内容  File.WriteAllText(filePath, content, encoding);}/// <summary>  /// 向文本文件中写入内容  /// </summary>  /// <param name="filePath">文件的绝对路径</param>  /// <param name="content">写入的内容</param>          public static void WriteText(string filePath, string content){//向文件写入内容  File.WriteAllText(filePath, content, Encoding.UTF8);}#endregion#region 向文本文件的尾部追加内容/// <summary>  /// 向文本文件的尾部追加内容  /// </summary>  /// <param name="filePath">文件的绝对路径</param>  /// <param name="content">写入的内容</param>  public static void AppendText(string filePath, string content){File.AppendAllText(filePath, content);}#endregion#region 将流读取到缓冲区中/// <summary>  /// 将流读取到缓冲区中  /// </summary>  /// <param name="stream">原始流</param>  public static byte[] StreamToBytes(Stream stream, int length){try{length = stream.Length > length ? length : (int)stream.Length;//创建缓冲区  byte[] buffer = new byte[length];//读取流  stream.Read(buffer, 0, length);//返回流  return buffer;}catch (Exception) { throw; }finally{stream.Position = 0;//关闭流  //stream.Close();}}#endregion#region 将文件读取到缓冲区中/// <summary>  /// 将文件读取到缓冲区中  /// </summary>  /// <param name="filePath">文件的绝对路径</param>  public static byte[] FileToBytes(string filePath){//获取文件的大小   int fileSize = (int)GetFileSize(filePath);//创建一个临时缓冲区  byte[] buffer = new byte[fileSize];//创建一个文件流  FileInfo fi = new FileInfo(filePath);FileStream fs = fi.Open(FileMode.Open);try{//将文件流读入缓冲区  fs.Read(buffer, 0, fileSize);return buffer;}catch{return null;}finally{//关闭文件流  fs.Close();}}#endregion#region 向文本文件的写入多行/// <summary>  /// 向文本文件的写入多行  /// </summary>  /// <param name="filePath">文件的绝对路径</param>  /// <param name="contents">写入的内容</param>  public static void WriteAllLines(string filePath, string[] contents){File.WriteAllLines(filePath, contents);}#endregion#region 将文件读取到缓冲区中/// <summary>  /// 将文件读取到缓冲区中  /// </summary>  /// <param name="filePath">文件的绝对路径</param>  public static Stream FileToStream(string filePath){//获取文件的大小   int fileSize = (int)GetFileSize(filePath);//创建一个临时缓冲区  byte[] buffer = new byte[fileSize];Stream stream = null;//创建一个文件流  FileInfo fi = new FileInfo(filePath);FileStream fs = fi.Open(FileMode.Open);try{//将文件流读入缓冲区  fs.Read(buffer, 0, fileSize);stream = new MemoryStream(buffer);return stream;}catch{return null;}finally{//关闭文件流  fs.Close();}}#endregion#region 将文件读取到字符串中/// <summary>  /// 将文件读取到字符串中  /// </summary>  /// <param name="filePath">文件的绝对路径</param>  public static string FileToString(string filePath){return FileToString(filePath, Encoding.Default);}/// <summary>  /// 将文件读取到字符串中  /// </summary>  /// <param name="filePath">文件的绝对路径</param>  /// <param name="encoding">字符编码</param>  public static string FileToString(string filePath, Encoding encoding){//创建流读取器  StreamReader reader = new StreamReader(filePath, encoding);try{//读取流  return reader.ReadToEnd();}catch{return string.Empty;}finally{//关闭流读取器  reader.Close();}}/// <summary>  /// 将文件读取到字符串中  /// </summary>  /// <param name="filePath">文件的绝对路径</param>  /// <param name="encoding">字符编码</param>  public static async Task<string> FileToStringAsync(string filePath, Encoding encoding){//创建流读取器  StreamReader reader = new StreamReader(filePath, encoding);try{//读取流  return await reader.ReadToEndAsync();}catch{return string.Empty;}finally{//关闭流读取器  reader.Close();}}#endregion#region 从文件的绝对路径中获取文件名( 包含扩展名 )/// <summary>  /// 从文件的绝对路径中获取文件名( 包含扩展名 )  /// </summary>  /// <param name="filePath">文件的绝对路径</param>          public static string GetFileName(string filePath){//获取文件的名称  FileInfo fi = new FileInfo(filePath);return fi.Name;}#endregion#region 从文件的绝对路径中获取文件名( 不包含扩展名 )/// <summary>  /// 从文件的绝对路径中获取文件名( 不包含扩展名 )  /// </summary>  /// <param name="filePath">文件的绝对路径</param>          public static string GetFileNameNoExtension(string filePath){//获取文件的名称  FileInfo fi = new FileInfo(filePath);string extension = fi.Extension;return fi.Name.Replace(extension, "");}#endregion#region 从文件的绝对路径中获取扩展名/// <summary>  /// 从文件的绝对路径中获取扩展名  /// </summary>  /// <param name="filePath">文件的绝对路径</param>          public static string GetExtension(string filePath){//获取文件的名称  FileInfo fi = new FileInfo(filePath);return fi.Extension;}#endregion#region 从文件的绝对路径中获取目录路径/// <summary>  /// 从文件的绝对路径中获取目录路径  /// </summary>  /// <param name="filePath">文件的绝对路径</param>          public static string GetFileDirPath(string filePath){//获取文件的名称  FileInfo fi = new FileInfo(filePath);return fi.DirectoryName;}#endregion#region 清空指定目录/// <summary>  /// 清空指定目录下所有文件及子目录,但该目录依然保存.  /// </summary>  /// <param name="directoryPath">指定目录的绝对路径</param>  public static void ClearDirectory(string directoryPath){if (IsExistDirectory(directoryPath)){//删除目录中所有的文件  string[] fileNames = GetFileNames(directoryPath);foreach (string t in fileNames){DeleteFile(t);}//删除目录中所有的子目录  string[] directoryNames = GetDirectories(directoryPath);foreach (string t in directoryNames){DeleteDirectory(t);}}}#endregion#region 清空文件内容/// <summary>  /// 清空文件内容  /// </summary>  /// <param name="filePath">文件的绝对路径</param>  public static void ClearFile(string filePath){//删除文件  File.Delete(filePath);//重新创建该文件  CreateFile(filePath);}#endregion#region 获取磁盘总空间/// <summary>/// 获取磁盘总空间/// </summary>/// <param name="diskName"></param>/// <returns></returns>public static long GetDiskTotalSize(string diskName){long totalSize = new long();diskName += ":\\";DriveInfo[] drives = DriveInfo.GetDrives();foreach (DriveInfo drive in drives){if (drive.Name == diskName){totalSize = drive.TotalSize / (1024 * 1024 * 1024);break;}}return totalSize;}#endregion#region 获取磁盘剩余空间/// <summary>/// 获取磁盘剩余空间/// </summary>/// <param name="diskName"></param>/// <returns></returns>public static long GetDiskFreeSize(string diskName){long freeSize = new long();diskName += ":\\";DriveInfo[] drives = DriveInfo.GetDrives();foreach (DriveInfo drive in drives){if (drive.Name == diskName){freeSize = drive.TotalFreeSpace / (1024 * 1024 * 1024);break;}}return freeSize;}#endregion#region 获取磁盘已用空间/// <summary>/// 获取磁盘已用空间/// </summary>/// <param name="diskName"></param>/// <returns></returns>public static long GetDiskUsedSize(string diskName){long usedSize = new long();diskName += ":\\";DriveInfo[] drives = DriveInfo.GetDrives();foreach (DriveInfo drive in drives){if (drive.Name == diskName){usedSize = drive.TotalSize / (1024 * 1024 * 1024) - drive.TotalFreeSpace / (1024 * 1024 * 1024);break;}}return usedSize;}#endregion#region 判断目标是文件夹还是目录/// <summary>/// 判断目标是文件夹还是目录(目录包括磁盘)/// </summary>/// <param name="filepath">路径</param>/// <returns>返回true为一个文件夹,返回false为一个文件</returns>public static bool IsDir(string filePath){FileInfo fi = new FileInfo(filePath);if ((fi.Attributes & FileAttributes.Directory) != 0)return true;elsereturn false;}#endregion#region 动态计算文件大小static public string FormatBytes(long bytes){string[] magnitudes = new string[] { "GB", "MB", "KB", "Bytes" };long max = (long)Math.Pow(1024, magnitudes.Length);return string.Format("{1:##.##} {0}",magnitudes.FirstOrDefault(magnitude => bytes > (max /= 1024)) ?? "0 Bytes",(decimal)bytes / (decimal)max).Trim();}#endregion}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/224766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器被攻击宕机的一些小建议

现在网络攻击屡有发生&#xff0c;任何网站服务器都面临这样的危险&#xff0c;服务器被攻击造成的崩溃宕机是损失是我们无法估量的。网络攻击我们无法预测&#xff0c;但做好防御措施是必须的&#xff0c;建议所有的网站都要做好防范措施&#xff0c;准备相应的防护预案&#…

linux/CentOS 7安装Nginx

Nginx 是 C语言 开发&#xff0c;建议在 Linux 上运行&#xff0c;当然&#xff0c;也可以安装 Windows 版本&#xff0c;本篇则使用 CentOS 7 作为安装环境。 Nginx一般使用非root账号安装&#xff0c;如果还没有非root账号&#xff0c;先创建账号 创建账号 创建组&#xf…

云原生之深入解析docker实用工具gosu和su-exec实践

一、volume 的权限问题 在 Docker 中&#xff0c;需要把 host 的目录挂载到 container 中作为 volume 使用时&#xff0c;往往会发生文件权限问题。常见的现象是&#xff0c;container 对该路径并无写权限&#xff0c;以致其中服务的各种千奇百怪的问题。导致这类问题的原因&a…

maven jar sort

1&#xff09;往常项目结构lib包排序 2&#xff09;maven的默认是没有排序的

《数据结构、算法与应用C++语言描述》- 构建哈夫曼树

哈夫曼树 完整可编译运行代码见&#xff1a;Github::Data-Structures-Algorithms-and-Applications/_29huffmanTree 定长编码与可变长编码 定长编码 每个字符都用固定长度的编码来表示。 例如假设一个文本是由字符 a、u、x 和 z 组成的字符串&#xff0c;每个字符用2位二进…

Python录制和绘制音频

要使用Python录制和绘制音频,使用Python的音频处理库和绘图库。 以下是一个简单的示例代码,演示如何使用Python录制音频并绘制其波形: import wave import numpy as np import matplotlib.pyplot as plt# 设置音频参数 sample_rate = 44100 # 采样率 duration = 5 # 录制…

【idea】idea尾部自动删除空格,idea2023.1.2关闭自动去除行尾空格的功能

这个功能是由于git或者svn上的代码有许多空格的时候&#xff0c;会自动把空格去掉&#xff0c;就会导致出现许多更改的地方&#xff0c;会自动删空格。 尾部刚打好空格准备写代码&#xff0c;自动就删掉空格&#xff0c;又得重打空格后继续编码&#xff0c;非常不爽。 设置如…

HTML5 Canvas画布讲解

一、canvas 简介 ​<canvas> 是 HTML5 新增的&#xff0c;一个可以使用脚本(通常为 JavaScript) 在其中绘制图像的 HTML 元素。它可以用来制作照片集或者制作简单(也不是那么简单)的动画&#xff0c;甚至可以进行实时视频处理和渲染。 ​它最初由苹果内部使用自己 MacO…

我的NPI项目之Android 安全系列 -- EMVCo

最近一直在和支付有关的内容纠缠&#xff0c;原来我负责的产品后面还要过EMVCo的认证。于是&#xff0c;就网上到处找找啥事EMVCo&#xff0c;啥是EMVCo&#xff0c;啥是EMVCo。 于是找到了一个神奇的个人网站&#xff1a;Ganeshji Marwaha 虽然时间有点久远&#xff0c;但是用…

黑马点评04集群下的并发安全

实战篇-08.优惠券秒杀-集群下的线程并发安全问题_哔哩哔哩_bilibili 为了应对高并发&#xff0c;需要把项目部署到多个机器构成集群&#xff0c;所以需要配置nginx。 1.如何模拟集群 通过idea的ctrl d修改配置&#xff0c;实现多个tomcat运行模拟集群 然后在nginx上配置节点&…

如何在PHP中使用Memcached和Redis?

在 PHP 中使用 Memcached 和 Redis 主要涉及两个方面&#xff1a;安装相关扩展和编写代码进行交互。以下是在 PHP 中使用 Memcached 和 Redis 的基本步骤&#xff1a; 使用 Memcached&#xff1a; 1. 安装 Memcached 扩展&#xff1a; 确保你的系统上安装了 Memcached 服务器…

计算机网络快速刷题

自用//奈奎斯特定理和香农定理计算题 参考博客&#xff1a;UDP协议是什么&#xff1f;作用是什么&#xff1f; 肝了&#xff0c;整理了8张图详解ARP原理 【网络协议详解】——FTP系统协议&#xff08;学习笔记&#xff09; 在OSI参考模型中&am…

Tekton 克隆 git 仓库

Tekton 克隆 git仓库 介绍如何使用 Tektonhub 官方 git-clone task 克隆 github 上的源码到本地。 git-clone task yaml文件下载地址&#xff1a;https://hub.tekton.dev/tekton/task/git-clone 查看git-clone task yaml内容&#xff1a; 点击Install&#xff0c;选择一种…

聊聊Java中的常用类String

String、StringBuffer、StringBuilder 的区别 从可变性分析 String不可变。StringBuffer、StringBuilder都继承自AbstractStringBuilder &#xff0c;两者的底层的数组value并没有使用private和final修饰&#xff0c;所以是可变的。 AbstractStringBuilder 源码如下所示 ab…

最新AI绘画Midjourney绘画提示词Prompt教程

一、Midjourney绘画工具 SparkAi【无需魔法使用】&#xff1a; sparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的…

《Kotlin核心编程》笔记:可空类型平台类型装箱类型数组类型泛型协变与逆变

可空类型 在Kotlin中&#xff0c;我们可以在任何类型后面加上“?”&#xff0c;比如“Int?”&#xff0c;实际上等同于“Int? Int or null”。 通过合理的使用&#xff0c;不仅能够简化很多判空代码&#xff0c;还能够有效避免空指针异常。 注意&#xff1a;由于null只能…

Tomcat 十大安全优化方法(详解版)

目录 1 talnet管理端口保护 2 AJP连接端口保护 3 禁用管理器 4 降权启动 5 控制文件列表的访问 6 隐藏版本信息 7 server header重写 8 限制IP访问 9 修改脚本权限 10 访问日志格式规范 1 talnet管理端口保护 配置内容&#xff1a; &#xff08;1&#xff09;修改默…

HCIA-H12-811题目解析(3)

1、【单选题】 以下关于路由器的描述&#xff0c;说法错误的是&#xff1f; 2、【单选题】某网络工程师在输入命令行时提示如下信息&#xff1a;Error:Unrecognized command foun at position.对于该提示信息说法正确的是&#xff1f; 3、【单选题】如下图所示的网络&#xf…

【Axure RP9】的详细安装及Axure入门应用

目录 一 Axure入门安装 1.1 Axure是什么? 1.2 Axure应用场景 1.3 Axure安装 1.3.1 汉化 1.3.2 授权 二, Axure应用 1.1 Axure软件界面概述 1.2 Axure的应用 1.2.1备份 1.2.2 视图显示及网格设置 1.2.3 生成HTML文件 1.2.4 备注说明 一 Axure入门安装 1.1 Axure…

搭建你的知识付费小程序平台:源码解析与技术实现

知识付费小程序平台在当今数字化时代扮演着越来越重要的角色&#xff0c;为教育者和学习者提供了一个灵活、便捷的学习环境。本文将以关键词“知识付费小程序源码”为基础&#xff0c;探讨如何搭建一个功能强大的知识付费小程序平台&#xff0c;并提供一些基础的技术代码示例。…