zoukankan      html  css  js  c++  java
  • .NET 文件相关的所有操作

      1 public static class FileSystemHelper
      2     {
      3         #region 检测指定目录是否存在
      4         /// <summary>
      5         /// 检测指定目录是否存在
      6         /// </summary>
      7         /// <param name="directoryPath">目录的绝对路径</param>
      8         /// <returns></returns>
      9         public static bool IsExistDirectory(string directoryPath)
     10         {
     11             return Directory.Exists(directoryPath);
     12         }
     13         #endregion
     14 
     15         #region 检测指定文件是否存在,如果存在返回true
     16         /// <summary>
     17         /// 检测指定文件是否存在,如果存在则返回true。
     18         /// </summary>
     19         /// <param name="filePath">文件的绝对路径</param>        
     20         public static bool IsExistFile(string filePath)
     21         {
     22             return File.Exists(filePath);
     23         }
     24         #endregion
     25 
     26         #region 获取指定目录中的文件列表
     27         /// <summary>
     28         /// 获取指定目录中所有文件列表
     29         /// </summary>
     30         /// <param name="directoryPath">指定目录的绝对路径</param>        
     31         public static string[] GetFileNames(string directoryPath)
     32         {
     33             //如果目录不存在,则抛出异常
     34             if (!IsExistDirectory(directoryPath))
     35             {
     36                 throw new FileNotFoundException();
     37             }
     38 
     39             //获取文件列表
     40             return Directory.GetFiles(directoryPath);
     41         }
     42         #endregion
     43 
     44         #region 获取指定目录中所有子目录列表,若要搜索嵌套的子目录列表,请使用重载方法.
     45         /// <summary>
     46         /// 获取指定目录中所有子目录列表,若要搜索嵌套的子目录列表,请使用重载方法.
     47         /// </summary>
     48         /// <param name="directoryPath">指定目录的绝对路径</param>        
     49         public static string[] GetDirectories(string directoryPath)
     50         {
     51             try
     52             {
     53                 return Directory.GetDirectories(directoryPath);
     54             }
     55             catch (IOException ex)
     56             {
     57                 throw ex;
     58             }
     59         }
     60         #endregion
     61 
     62         #region 获取指定目录及子目录中所有文件列表
     63         /// <summary>
     64         /// 获取指定目录及子目录中所有文件列表
     65         /// </summary>
     66         /// <param name="directoryPath">指定目录的绝对路径</param>
     67         /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字符。
     68         /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。</param>
     69         /// <param name="isSearchChild">是否搜索子目录</param>
     70         public static string[] GetFileNames(string directoryPath, string searchPattern, bool isSearchChild)
     71         {
     72             //如果目录不存在,则抛出异常
     73             if (!IsExistDirectory(directoryPath))
     74             {
     75                 throw new FileNotFoundException();
     76             }
     77 
     78             try
     79             {
     80                 if (isSearchChild)
     81                 {
     82                     return Directory.GetFiles(directoryPath, searchPattern, SearchOption.AllDirectories);
     83                 }
     84                 else
     85                 {
     86                     return Directory.GetFiles(directoryPath, searchPattern, SearchOption.TopDirectoryOnly);
     87                 }
     88             }
     89             catch (IOException ex)
     90             {
     91                 throw ex;
     92             }
     93         }
     94         #endregion
     95 
     96         #region 检测指定目录是否为空
     97         /// <summary>
     98         /// 检测指定目录是否为空
     99         /// </summary>
    100         /// <param name="directoryPath">指定目录的绝对路径</param>        
    101         public static bool IsEmptyDirectory(string directoryPath)
    102         {
    103             try
    104             {
    105                 //判断是否存在文件
    106                 string[] fileNames = GetFileNames(directoryPath);
    107                 if (fileNames.Length > 0)
    108                 {
    109                     return false;
    110                 }
    111 
    112                 //判断是否存在文件夹
    113                 string[] directoryNames = GetDirectories(directoryPath);
    114                 if (directoryNames.Length > 0)
    115                 {
    116                     return false;
    117                 }
    118 
    119                 return true;
    120             }
    121             catch
    122             {
    123                 //这里记录日志
    124                 //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message);
    125                 return true;
    126             }
    127         }
    128         #endregion
    129 
    130         #region 检测指定目录中是否存在指定的文件
    131         /// <summary>
    132         /// 检测指定目录中是否存在指定的文件,若要搜索子目录请使用重载方法.
    133         /// </summary>
    134         /// <param name="directoryPath">指定目录的绝对路径</param>
    135         /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字符。
    136         /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。</param>        
    137         public static bool Contains(string directoryPath, string searchPattern)
    138         {
    139             try
    140             {
    141                 //获取指定的文件列表
    142                 string[] fileNames = GetFileNames(directoryPath, searchPattern, false);
    143 
    144                 //判断指定文件是否存在
    145                 if (fileNames.Length == 0)
    146                 {
    147                     return false;
    148                 }
    149                 else
    150                 {
    151                     return true;
    152                 }
    153             }
    154             catch (Exception ex)
    155             {
    156                 throw new Exception(ex.Message);
    157                 //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message);
    158             }
    159         }
    160 
    161         /// <summary>
    162         /// 检测指定目录中是否存在指定的文件
    163         /// </summary>
    164         /// <param name="directoryPath">指定目录的绝对路径</param>
    165         /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字符。
    166         /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。</param> 
    167         /// <param name="isSearchChild">是否搜索子目录</param>
    168         public static bool Contains(string directoryPath, string searchPattern, bool isSearchChild)
    169         {
    170             try
    171             {
    172                 //获取指定的文件列表
    173                 string[] fileNames = GetFileNames(directoryPath, searchPattern, true);
    174 
    175                 //判断指定文件是否存在
    176                 if (fileNames.Length == 0)
    177                 {
    178                     return false;
    179                 }
    180                 else
    181                 {
    182                     return true;
    183                 }
    184             }
    185             catch (Exception ex)
    186             {
    187                 throw new Exception(ex.Message);
    188                 //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message);
    189             }
    190         }
    191         #endregion
    192 
    193         #region 创建目录
    194         /// <summary>
    195         /// 创建目录
    196         /// </summary>
    197         /// <param name="dir">要创建的目录路径包括目录名</param>
    198         public static void CreateDir(string dir)
    199         {
    200             if (dir.Length == 0) return;
    201             if (!Directory.Exists(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir))
    202                 Directory.CreateDirectory(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir);
    203         }
    204         #endregion
    205 
    206         #region 删除目录
    207         /// <summary>
    208         /// 删除目录
    209         /// </summary>
    210         /// <param name="dir">要删除的目录路径和名称</param>
    211         public static void DeleteDir(string dir)
    212         {
    213             if (dir.Length == 0) return;
    214             if (Directory.Exists(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir))
    215                 Directory.Delete(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir);
    216         }
    217         #endregion
    218 
    219         #region 删除文件
    220         /// <summary>
    221         /// 删除文件
    222         /// </summary>
    223         /// <param name="file">要删除的文件路径和名称</param>
    224         public static void DeleteFile(string file)
    225         {
    226             if (File.Exists(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + file))
    227                 File.Delete(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + file);
    228         }
    229         #endregion
    230 
    231         #region 创建文件
    232         /// <summary>
    233         /// 创建文件
    234         /// </summary>
    235         /// <param name="dir">带后缀的文件名</param>
    236         /// <param name="pagestr">文件内容</param>
    237         public static void CreateFile(string dir, string pagestr)
    238         {
    239             dir = dir.Replace("/", "\");
    240             if (dir.IndexOf("\") > -1)
    241                 CreateDir(dir.Substring(0, dir.LastIndexOf("\")));
    242             System.IO.StreamWriter sw = new System.IO.StreamWriter(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir, false, System.Text.Encoding.GetEncoding("GB2312"));
    243             sw.Write(pagestr);
    244             sw.Close();
    245         }
    246         #endregion
    247 
    248         #region 移动文件(剪贴--粘贴)
    249         /// <summary>
    250         /// 移动文件(剪贴--粘贴)
    251         /// </summary>
    252         /// <param name="dir1">要移动的文件的路径及全名(包括后缀)</param>
    253         /// <param name="dir2">文件移动到新的位置,并指定新的文件名</param>
    254         public static void MoveFile(string dir1, string dir2)
    255         {
    256             dir1 = dir1.Replace("/", "\");
    257             dir2 = dir2.Replace("/", "\");
    258             if (File.Exists(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir1))
    259                 File.Move(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir1, System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir2);
    260         }
    261         #endregion
    262 
    263         #region 复制文件
    264         /// <summary>
    265         /// 复制文件
    266         /// </summary>
    267         /// <param name="dir1">要复制的文件的路径已经全名(包括后缀)</param>
    268         /// <param name="dir2">目标位置,并指定新的文件名</param>
    269         public static void CopyFile(string dir1, string dir2)
    270         {
    271             dir1 = dir1.Replace("/", "\");
    272             dir2 = dir2.Replace("/", "\");
    273             if (File.Exists(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir1))
    274             {
    275                 File.Copy(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir1, System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir2, true);
    276             }
    277         }
    278         #endregion
    279 
    280         #region 根据时间得到目录名 / 格式:yyyyMMdd 或者 HHmmssff
    281         /// <summary>
    282         /// 根据时间得到目录名yyyyMMdd
    283         /// </summary>
    284         /// <returns></returns>
    285         public static string GetDateDir()
    286         {
    287             return DateTime.Now.ToString("yyyyMMdd");
    288         }
    289         /// <summary>
    290         /// 根据时间得到文件名HHmmssff
    291         /// </summary>
    292         /// <returns></returns>
    293         public static string GetDateFile()
    294         {
    295             return DateTime.Now.ToString("HHmmssff");
    296         }
    297         #endregion
    298 
    299         #region 复制文件夹
    300         /// <summary>
    301         /// 复制文件夹(递归)
    302         /// </summary>
    303         /// <param name="varFromDirectory">源文件夹路径</param>
    304         /// <param name="varToDirectory">目标文件夹路径</param>
    305         public static void CopyFolder(string varFromDirectory, string varToDirectory)
    306         {
    307             Directory.CreateDirectory(varToDirectory);
    308 
    309             if (!Directory.Exists(varFromDirectory)) return;
    310 
    311             string[] directories = Directory.GetDirectories(varFromDirectory);
    312 
    313             if (directories.Length > 0)
    314             {
    315                 foreach (string d in directories)
    316                 {
    317                     CopyFolder(d, varToDirectory + d.Substring(d.LastIndexOf("\")));
    318                 }
    319             }
    320             string[] files = Directory.GetFiles(varFromDirectory);
    321             if (files.Length > 0)
    322             {
    323                 foreach (string s in files)
    324                 {
    325                     File.Copy(s, varToDirectory + s.Substring(s.LastIndexOf("\")), true);
    326                 }
    327             }
    328         }
    329         #endregion
    330 
    331         #region 检查文件,如果文件不存在则创建
    332         /// <summary>
    333         /// 检查文件,如果文件不存在则创建  
    334         /// </summary>
    335         /// <param name="FilePath">路径,包括文件名</param>
    336         public static void ExistsFile(string FilePath)
    337         {
    338             //if(!File.Exists(FilePath))    
    339             //File.Create(FilePath);    
    340             //以上写法会报错,详细解释请看下文.........   
    341             if (!File.Exists(FilePath))
    342             {
    343                 FileStream fs = File.Create(FilePath);
    344                 fs.Close();
    345             }
    346         }
    347         #endregion
    348 
    349         #region 删除指定文件夹对应其他文件夹里的文件
    350         /// <summary>
    351         /// 删除指定文件夹对应其他文件夹里的文件
    352         /// </summary>
    353         /// <param name="varFromDirectory">指定文件夹路径</param>
    354         /// <param name="varToDirectory">对应其他文件夹路径</param>
    355         public static void DeleteFolderFiles(string varFromDirectory, string varToDirectory)
    356         {
    357             Directory.CreateDirectory(varToDirectory);
    358 
    359             if (!Directory.Exists(varFromDirectory)) return;
    360 
    361             string[] directories = Directory.GetDirectories(varFromDirectory);
    362 
    363             if (directories.Length > 0)
    364             {
    365                 foreach (string d in directories)
    366                 {
    367                     DeleteFolderFiles(d, varToDirectory + d.Substring(d.LastIndexOf("\")));
    368                 }
    369             }
    370 
    371 
    372             string[] files = Directory.GetFiles(varFromDirectory);
    373 
    374             if (files.Length > 0)
    375             {
    376                 foreach (string s in files)
    377                 {
    378                     File.Delete(varToDirectory + s.Substring(s.LastIndexOf("\")));
    379                 }
    380             }
    381         }
    382         #endregion
    383 
    384         #region 从文件的绝对路径中获取文件名( 包含扩展名 )
    385         /// <summary>
    386         /// 从文件的绝对路径中获取文件名( 包含扩展名 )
    387         /// </summary>
    388         /// <param name="filePath">文件的绝对路径</param>        
    389         public static string GetFileName(string filePath)
    390         {
    391             //获取文件的名称
    392             FileInfo fi = new FileInfo(filePath);
    393             return fi.Name;
    394         }
    395         #endregion
    396 
    397         #region 创建一个目录
    398         /// <summary>
    399         /// 创建一个目录
    400         /// </summary>
    401         /// <param name="directoryPath">目录的绝对路径</param>
    402         public static void CreateDirectory(string directoryPath)
    403         {
    404             //如果目录不存在则创建该目录
    405             if (!IsExistDirectory(directoryPath))
    406             {
    407                 Directory.CreateDirectory(directoryPath);
    408             }
    409         }
    410         #endregion
    411 
    412         #region 创建一个文件
    413         /// <summary>
    414         /// 创建一个文件。
    415         /// </summary>
    416         /// <param name="filePath">文件的绝对路径</param>
    417         public static void CreateFile(string filePath)
    418         {
    419             try
    420             {
    421                 //如果文件不存在则创建该文件
    422                 if (!IsExistFile(filePath))
    423                 {
    424                     //创建一个FileInfo对象
    425                     FileInfo file = new FileInfo(filePath);
    426 
    427                     //创建文件
    428                     FileStream fs = file.Create();
    429 
    430                     //关闭文件流
    431                     fs.Close();
    432                 }
    433             }
    434             catch (Exception ex)
    435             {
    436                 //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message);
    437                 throw ex;
    438             }
    439         }
    440 
    441         /// <summary>
    442         /// 创建一个文件,并将字节流写入文件。
    443         /// </summary>
    444         /// <param name="filePath">文件的绝对路径</param>
    445         /// <param name="buffer">二进制流数据</param>
    446         public static void CreateFile(string filePath, byte[] buffer)
    447         {
    448             try
    449             {
    450                 //如果文件不存在则创建该文件
    451                 if (!IsExistFile(filePath))
    452                 {
    453                     //创建一个FileInfo对象
    454                     FileInfo file = new FileInfo(filePath);
    455 
    456                     //创建文件
    457                     FileStream fs = file.Create();
    458 
    459                     //写入二进制流
    460                     fs.Write(buffer, 0, buffer.Length);
    461 
    462                     //关闭文件流
    463                     fs.Close();
    464                 }
    465             }
    466             catch (Exception ex)
    467             {
    468                 //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message);
    469                 throw ex;
    470             }
    471         }
    472         #endregion
    473 
    474         #region 获取文本文件的行数
    475         /// <summary>
    476         /// 获取文本文件的行数
    477         /// </summary>
    478         /// <param name="filePath">文件的绝对路径</param>        
    479         public static int GetLineCount(string filePath)
    480         {
    481             //将文本文件的各行读到一个字符串数组中
    482             string[] rows = File.ReadAllLines(filePath);
    483 
    484             //返回行数
    485             return rows.Length;
    486         }
    487         #endregion
    488 
    489         #region 获取一个文件的长度
    490         /// <summary>
    491         /// 获取一个文件的长度,单位为Byte
    492         /// </summary>
    493         /// <param name="filePath">文件的绝对路径</param>        
    494         public static int GetFileSize(string filePath)
    495         {
    496             //创建一个文件对象
    497             FileInfo fi = new FileInfo(filePath);
    498 
    499             //获取文件的大小
    500             return (int)fi.Length;
    501         }
    502         #endregion
    503 
    504         #region 获取指定目录中的子目录列表
    505         /// <summary>
    506         /// 获取指定目录及子目录中所有子目录列表
    507         /// </summary>
    508         /// <param name="directoryPath">指定目录的绝对路径</param>
    509         /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字符。
    510         /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。</param>
    511         /// <param name="isSearchChild">是否搜索子目录</param>
    512         public static string[] GetDirectories(string directoryPath, string searchPattern, bool isSearchChild)
    513         {
    514             try
    515             {
    516                 if (isSearchChild)
    517                 {
    518                     return Directory.GetDirectories(directoryPath, searchPattern, SearchOption.AllDirectories);
    519                 }
    520                 else
    521                 {
    522                     return Directory.GetDirectories(directoryPath, searchPattern, SearchOption.TopDirectoryOnly);
    523                 }
    524             }
    525             catch (IOException ex)
    526             {
    527                 throw ex;
    528             }
    529         }
    530         #endregion
    531 
    532         #region 向文本文件写入内容
    533 
    534         /// <summary>
    535         /// 向文本文件中写入内容
    536         /// </summary>
    537         /// <param name="filePath">文件的绝对路径</param>
    538         /// <param name="text">写入的内容</param>
    539         /// <param name="encoding">编码</param>
    540         public static void WriteText(string filePath, string text, Encoding encoding)
    541         {
    542             //向文件写入内容
    543             File.WriteAllText(filePath, text, encoding);
    544         }
    545         #endregion
    546 
    547         #region 向文本文件的尾部追加内容
    548         /// <summary>
    549         /// 向文本文件的尾部追加内容
    550         /// </summary>
    551         /// <param name="filePath">文件的绝对路径</param>
    552         /// <param name="content">写入的内容</param>
    553         public static void AppendText(string filePath, string content)
    554         {
    555             File.AppendAllText(filePath, content);
    556         }
    557         #endregion
    558 
    559         #region 将现有文件的内容复制到新文件中
    560         /// <summary>
    561         /// 将源文件的内容复制到目标文件中
    562         /// </summary>
    563         /// <param name="sourceFilePath">源文件的绝对路径</param>
    564         /// <param name="destFilePath">目标文件的绝对路径</param>
    565         public static void Copy(string sourceFilePath, string destFilePath)
    566         {
    567             File.Copy(sourceFilePath, destFilePath, true);
    568         }
    569         #endregion
    570 
    571         #region 将文件移动到指定目录
    572         /// <summary>
    573         /// 将文件移动到指定目录
    574         /// </summary>
    575         /// <param name="sourceFilePath">需要移动的源文件的绝对路径</param>
    576         /// <param name="descDirectoryPath">移动到的目录的绝对路径</param>
    577         public static void Move(string sourceFilePath, string descDirectoryPath)
    578         {
    579             //获取源文件的名称
    580             string sourceFileName = GetFileName(sourceFilePath);
    581 
    582             if (IsExistDirectory(descDirectoryPath))
    583             {
    584                 //如果目标中存在同名文件,则删除
    585                 if (IsExistFile(descDirectoryPath + "\" + sourceFileName))
    586                 {
    587                     DeleteFile(descDirectoryPath + "\" + sourceFileName);
    588                 }
    589                 //将文件移动到指定目录
    590                 File.Move(sourceFilePath, descDirectoryPath + "\" + sourceFileName);
    591             }
    592         }
    593         #endregion
    594 
    595 
    596         #region 从文件的绝对路径中获取文件名( 不包含扩展名 )
    597         /// <summary>
    598         /// 从文件的绝对路径中获取文件名( 不包含扩展名 )
    599         /// </summary>
    600         /// <param name="filePath">文件的绝对路径</param>        
    601         public static string GetFileNameNoExtension(string filePath)
    602         {
    603             //获取文件的名称
    604             FileInfo fi = new FileInfo(filePath);
    605             return fi.Name.Split('.')[0];
    606         }
    607         #endregion
    608 
    609         #region 从文件的绝对路径中获取扩展名
    610         /// <summary>
    611         /// 从文件的绝对路径中获取扩展名
    612         /// </summary>
    613         /// <param name="filePath">文件的绝对路径</param>        
    614         public static string GetExtension(string filePath)
    615         {
    616             //获取文件的名称
    617             FileInfo fi = new FileInfo(filePath);
    618             return fi.Extension;
    619         }
    620         #endregion
    621 
    622         #region 清空指定目录
    623         /// <summary>
    624         /// 清空指定目录下所有文件及子目录,但该目录依然保存.
    625         /// </summary>
    626         /// <param name="directoryPath">指定目录的绝对路径</param>
    627         public static void ClearDirectory(string directoryPath)
    628         {
    629             if (IsExistDirectory(directoryPath))
    630             {
    631                 //删除目录中所有的文件
    632                 string[] fileNames = GetFileNames(directoryPath);
    633                 for (int i = 0; i < fileNames.Length; i++)
    634                 {
    635                     DeleteFile(fileNames[i]);
    636                 }
    637 
    638                 //删除目录中所有的子目录
    639                 string[] directoryNames = GetDirectories(directoryPath);
    640                 for (int i = 0; i < directoryNames.Length; i++)
    641                 {
    642                     DeleteDirectory(directoryNames[i]);
    643                 }
    644             }
    645         }
    646         #endregion
    647 
    648         #region 清空文件内容
    649         /// <summary>
    650         /// 清空文件内容
    651         /// </summary>
    652         /// <param name="filePath">文件的绝对路径</param>
    653         public static void ClearFile(string filePath)
    654         {
    655             //删除文件
    656             File.Delete(filePath);
    657 
    658             //重新创建该文件
    659             CreateFile(filePath);
    660         }
    661         #endregion
    662 
    663         #region 删除指定目录
    664         /// <summary>
    665         /// 删除指定目录及其所有子目录
    666         /// </summary>
    667         /// <param name="directoryPath">指定目录的绝对路径</param>
    668         public static void DeleteDirectory(string directoryPath)
    669         {
    670             if (IsExistDirectory(directoryPath))
    671             {
    672                 Directory.Delete(directoryPath, true);
    673             }
    674         }
    675         #endregion
    676     }
  • 相关阅读:
    实验 6:OpenDaylight 实验——OpenDaylight 及 Postman 实现流表下发
    实验 5:OpenFlow 协议分析和 OpenDaylight 安装
    实验 4:Open vSwitch 实验——Mininet 中使用 OVS 命令
    实验 3:Mininet 实验——测量路径的损耗率
    软件工程第一次作业
    实验 2:Mininet 实验——拓扑的命令脚本生成
    实验 1:Mininet 源码安装和可视化拓扑工具
    软件工程第一次作业
    软工实践个人总结
    2020软工第二次结对作业
  • 原文地址:https://www.cnblogs.com/toloe/p/4630345.html
Copyright © 2011-2022 走看看