Mega Code Archive

 
Categories / C# / File Stream
 

Remove a file or similar files if wildcard is included

#region License and Copyright /* -------------------------------------------------------------------------  * Dotnet Commons IO  *  *  * This library is free software; you can redistribute it and/or modify it   * under the terms of the GNU Lesser General Public License as published by   * the Free Software Foundation; either version 2.1 of the License, or   * (at your option) any later version.  *  * This library is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY   * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License   * for more details.   *  * You should have received a copy of the GNU Lesser General Public License   * along with this library; if not, write to the   *   * Free Software Foundation, Inc.,   * 59 Temple Place,   * Suite 330,   * Boston,   * MA 02111-1307   * USA   *   * -------------------------------------------------------------------------  */ #endregion using System; using System.Collections; using System.Globalization; using System.IO; namespace Dotnet.Commons.IO {     ///       /// <summary>       /// This class provides basic facilities for manipulating files and file paths.     ///      /// <h3>File-related methods</h3>     /// There are methods to      /// <list type="bullet">     ///     <item>copy a file to another file,</item>     ///     <item>compare the content of 2 files,</item>     ///     <item>delete files using the wildcard character,</item>     ///     <item>etc</item>     /// </list>     /// </summary>     ///          public sealed class FileUtils     {         private static bool hasWildCards(string file)         {             return file.IndexOf("*") > -1;         }         /// ---------------------------------------------------------------         /// <summary>         /// Get all the files that matches a wildcard pattern, eg. (*.tmp)         /// </summary>         /// <param name="pathPattern">Wildcard pattern to search, eg. (Profile*.doc)</param>         /// <returns>an array of FileInfo objects that results from the wildcard pattern file search</returns>         /// ---------------------------------------------------------------         public static FileInfo[] GetFilesMatchWildCard(string pathPattern)         {             FileInfo[] files = new FileInfo[0];             if (hasWildCards(pathPattern))             {                 string dir = Path.GetDirectoryName(pathPattern);                 DirectoryInfo info = new DirectoryInfo(dir);                 string pattern = Path.GetFileName(pathPattern);                 if (info.Exists)                     files = info.GetFiles(pattern);             }             else             {                 files = new FileInfo[] { new FileInfo(pathPattern.Trim()) };             }             return files;         }         /// ---------------------------------------------------------------         /// <summary>         /// Remove a file or similar files if wildcard is included.         /// </summary>         /// <param name="path">path of the file(s) to delete</param>         /// ---------------------------------------------------------------         public static void Remove(string path)         {             bool hasWildCard = FileUtils.hasWildCards(path);             if (hasWildCard)             {                 FileInfo[] filesToRemove = GetFilesMatchWildCard(path);                 foreach (FileInfo file in filesToRemove)                 {                     // delete each file                     file.Delete();                 }                 return;             }             FileInfo fi = new FileInfo(path);             if (fi.Exists) fi.Delete();         }         /// ---------------------------------------------------------------         /// <summary>         /// Remove a file or Directory recursively         /// </summary>         /// <param name="path"></param>         /// ---------------------------------------------------------------         public static void RemoveAll(string path)         {             if (IsDirectory(path))             {                 Directory.Delete(path, true);             }             else             {                 if (FileUtils.hasWildCards(path))                     Remove(path);                 else                     File.Delete(path);             }         }         /// ---------------------------------------------------------------         /// <summary>         /// Determine if a path is the path of a directory.         /// </summary>         /// <param name="path"></param>         /// <returns>true if path is a valid directory, false otherwise</returns>         /// ---------------------------------------------------------------         public static bool IsDirectory(string path)         {             return Directory.Exists(path);         }     } }