using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Eugen.ESystem.IO { public partial class ReadFilesFromFolder : Form { #region Version und Copyright // Version und Copyright static string dllName = Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); //Den Programmnamen auslesen static string dllVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); static object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false); static string copyright = GenerateCopyright(); //Assembly Datum und Zeit static DateTime value = AssemblyDateTime(); string date = value.ToShortDateString(); string time = value.ToLongTimeString(); private static DateTime AssemblyDateTime() { var version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; var buildDateTime = new DateTime(2000, 1, 1).Add(new TimeSpan(TimeSpan.TicksPerDay * version.Build + TimeSpan.TicksPerSecond * 2 * version.Revision)); //Tage seit dem 1. Januar 2000 und Sekunden seit Mitternacht, (multiplizier mit 2 ergibt das Original) return buildDateTime; } private static string CurrentYear() { DateTime dtn = DateTime.Now; return dtn.Year.ToString(); } private static string StartYear() { string startYear = ""; if (((AssemblyCopyrightAttribute)attributes[0]).Copyright.Contains("Copyright © ")) { startYear = ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace("Copyright © ", ""); while (startYear.StartsWith(" ")) { startYear = startYear.Remove(0, 1); } if (startYear.Contains(" ")) { startYear = startYear.Remove(startYear.IndexOf(" ")); } return startYear; } else { DateTime dtn = DateTime.Now; return dtn.Year.ToString(); } } private static string GenerateCopyright() { string startYear = StartYear(); string currentYear = CurrentYear(); if (startYear == currentYear) { return ((AssemblyCopyrightAttribute)attributes[0]).Copyright; } else { return ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace(startYear, String.Concat(startYear, "-", currentYear)); } } #endregion #region DLL-Info /// /// Contains the name of the dll file. /// public static string DllName { private set; get; } /// /// Contains the version of the dll file. /// public static string DllVersion { private set; get; } /// /// Contains the copyright notice. /// public static string Copyright { private set; get; } /// /// Contains the name-, version- and copyright-information of the dll file. /// public static string[] DllInfo { private set; get; } private static void SetDllInfo() { //Name, Version und Copyright setzen DllName = dllName; DllVersion = dllVersion; Copyright = copyright; string[] dllInfo = new string[3]; dllInfo[0] = dllName; dllInfo[1] = dllVersion; dllInfo[2] = copyright; DllInfo = dllInfo; } protected string ProgramName { private set; get; } protected string ProgramVersion { private set; get; } protected string ProgramCopyright { private set; get; } #endregion /// /// Reads all files from a directory. Serves only to set the DLL information. /// static ReadFilesFromFolder() { SetDllInfo(); } /// /// Reads all files from a directory. /// /// A valid directory which is to be read out. public ReadFilesFromFolder(string folder) { SetDllInfo(); ClearFilesFound(); try { FilesFound = ReadFiles(folder, "", "", false, false); } catch (Exception) { throw; } } /// /// Reads all files from a directory. /// /// A valid directory which is to be read out. /// Files which have the specified extension will be returned. public ReadFilesFromFolder(string folder, string extension) { SetDllInfo(); ClearFilesFound(); try { FilesFound = ReadFiles(folder, extension, "", false, false); } catch (Exception) { throw; } } /// /// Reads all files from a directory. /// /// A valid directory which is to be read out. /// Only files containing the specified pattern will be returned. /// If the value is true, then the pattern is searched at the beginning of the directory name. Only 'startsWithPattern' or 'endsWithPattern' may be true, never both values. /// If the value is true, then the pattern is searched at the end of the directory name. public ReadFilesFromFolder(string folder, string pattern, bool startsWithPattern, bool endsWithPattern) { SetDllInfo(); ClearFilesFound(); try { FilesFound = ReadFiles(folder, "", pattern, startsWithPattern, endsWithPattern); } catch (Exception) { throw; } } /// /// Reads all files from a directory. /// /// A valid directory which is to be read out. /// Files which have the specified extension will be returned. /// Only files containing the specified pattern will be returned. /// If the value is true, then the pattern is searched at the beginning of the directory name. Only 'startsWithPattern' or 'endsWithPattern' may be true, never both values. /// If the value is true, then the pattern is searched at the end of the directory name. public ReadFilesFromFolder(string folder, string extension, string pattern, bool startsWithPattern, bool endsWithPattern) { SetDllInfo(); ClearFilesFound(); try { FilesFound = ReadFiles(folder, extension, pattern, startsWithPattern, endsWithPattern); } catch (Exception) { throw; } } /// /// List of all found files. /// public List FilesFound { private set; get; } private void ClearFilesFound() { if (FilesFound != null) { FilesFound.Clear(); //Liste löschen } } private List ReadFiles(string folder, string extension, string pattern, bool startsWithPattern, bool endsWithPattern) { if (startsWithPattern & endsWithPattern) { throw new ArgumentException(); } List files = new List(); if (!Directory.Exists(folder)) { throw new DirectoryNotFoundException(); } else { //Alle Dateien einlesen foreach (var item in Directory.GetFiles(folder)) { //Prüfen ob 'extension' gestzt ist if (String.IsNullOrEmpty(extension)) { //Wenn keine 'extension' gesetzt ist, dann zur Liste hinzufügen //Prüfen ob 'pattern' gesetzt ist if (String.IsNullOrEmpty(pattern)) { files.Add(item); //Wenn kein 'pattern' gesetzt ist, dann zur Liste hinzufügen } else { if (startsWithPattern && item.Remove(0, item.LastIndexOf("\\") + 1).StartsWith(pattern)) { files.Add(item); //Wenn ein 'pattern' am Anfang gesetzt ist, dann zur List hinzufügen, wenn die Datei das 'pattern' enthält } if (endsWithPattern && item.Remove(0, item.LastIndexOf("\\")).EndsWith(pattern)) { files.Add(item); //Wenn ein 'pattern' am Ende gesetzt ist, dann zur List hinzufügen, wenn die Datei das 'pattern' enthält } if ((!startsWithPattern & !endsWithPattern) & item.Remove(0, item.LastIndexOf("\\") + 1).Contains(pattern)) { files.Add(item); //Wenn ein 'pattern' gesetzt ist, dann zur List hinzufügen, wenn die Datei das 'pattern' enthält } } } else { if (Path.GetExtension(item) == string.Concat(".", extension)) { //Wenn eine 'extension' gesetzt ist und diese übereinstimmt, dann zur Liste hinzufügen //Prüfen ob 'pattern' gesetzt ist if (String.IsNullOrEmpty(pattern)) { files.Add(item); //Wenn kein 'pattern' gesetzt ist, dann zur Liste hinzufügen } else { if (startsWithPattern && Path.GetFileName(item).Replace(Path.GetExtension(item), "").StartsWith(pattern)) { files.Add(item); //Wenn ein 'pattern' am Anfang gesetzt ist, dann zur List hinzufügen, wenn die Datei das 'pattern' enthält } if (endsWithPattern && Path.GetFileName(item).Replace(Path.GetExtension(item), "").EndsWith(pattern)) { files.Add(item); //Wenn ein 'pattern' am Ende gesetzt ist, dann zur List hinzufügen, wenn die Datei das 'pattern' enthält } if ((!startsWithPattern & !endsWithPattern) & Path.GetFileName(item).Replace(Path.GetExtension(item), "").Contains(pattern)) { files.Add(item); //Wenn ein 'pattern' gesetzt ist, dann zur List hinzufügen, wenn die Datei das 'pattern' enthält } } } } } } return files; } } }