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 } }