Mega Code Archive

 
Categories / C# / File Stream
 

Get Files Get Folders methods

// crudwork // Copyright 2004 by Steve T. Pham (http://www.crudwork.com) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program 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 General Public License for more details. // // You should have received a copy of the GNU General Public License // along with This program.  If not, see <http://www.gnu.org/licenses/>. using System; using System.Collections.Generic; using System.IO; using System.Text; using System.CodeDom.Compiler; using System.Text.RegularExpressions; namespace crudwork.Utilities {   /// <summary>   /// File Utility   /// </summary>   public static class FileUtil   {     #region Enums     /// <summary>     /// File order type for sorting list of filenames     /// </summary>     public enum FileOrderType     {       /// <summary>       /// No sort       /// </summary>       None = 0,       /// <summary>       /// Sort by filename       /// </summary>       Filename = 1,       /// <summary>       /// Sort by extension       /// </summary>       Extension = 2,       /// <summary>       /// Sort by the size       /// </summary>       Size = 3,       /// <summary>       /// Sort by last modified timestamp       /// </summary>       LastWriteTime = 4,       /// <summary>       /// Sort by file creation timestamp       /// </summary>       CreationDate = 5,     }     #endregion     #region GetFiles / GetFolders methods     /// <summary>     /// Shorten the folder name     /// </summary>     /// <param name="fileList"></param>     /// <param name="path"></param>     /// <returns></returns>     public static string[] MakeRelativePath(string[] fileList, string path)     {       List<String> results = new List<string>();       for (int i = 0; i < fileList.Length; i++)       {         string file = fileList[i];         results.Add(file.Replace(path + "\\", ""));       }       return results.ToArray();     }     /// <summary>     /// sort the file list based on the given order type     /// </summary>     /// <param name="fileList"></param>     /// <param name="fileOrderType"></param>     /// <returns></returns>     public static string[] OrderFileBy(string[] fileList, FileOrderType fileOrderType)     {       string[] orderKey = new string[fileList.Length];       string[] orderVal = new string[fileList.Length];       //int maskLength = StringUtil.MaxLength(fileList);       int maskLength = 100;       string maskFormat = String.Format(@"{{0,{0}}}", maskLength);       for (int i = 0; i < fileList.Length; i++)       {         string filename = fileList[i];         string orderByKey;         if (!File.Exists(filename))           throw new FileNotFoundException(filename);         FileInfo fi = new FileInfo(filename);         switch (fileOrderType)         {           case FileOrderType.None:             orderByKey = "";             break;           case FileOrderType.Filename:             {               orderByKey = String.Format(maskFormat, fi.Name);             }             break;           case FileOrderType.LastWriteTime:             {               DateTime dt = fi.LastWriteTime;               orderByKey = String.Format("{0:0000}{1:00}{2:00}{3:00}{4:00}{5:00}{6:000}",                 dt.Year,                 dt.Month,                 dt.Day,                 dt.Hour,                 dt.Minute,                 dt.Second,                 dt.Millisecond                 );             }             break;           default:             throw new ArgumentOutOfRangeException("not supported: " + fileOrderType);         }         orderKey[i] = orderByKey;         orderVal[i] = fileList[i];       }       if (fileOrderType != FileOrderType.None)       {         Array.Sort(orderKey, orderVal);       }       return orderVal;     }     #endregion    } }