diff --git a/.vs/DeleteFileFolder.git/v16/.suo b/.vs/DeleteFileFolder.git/v16/.suo index 72dd8e0..8238560 100644 Binary files a/.vs/DeleteFileFolder.git/v16/.suo and b/.vs/DeleteFileFolder.git/v16/.suo differ diff --git a/.vs/DeleteFileFolder.git/v17/.suo b/.vs/DeleteFileFolder.git/v17/.suo new file mode 100644 index 0000000..c99aaa9 Binary files /dev/null and b/.vs/DeleteFileFolder.git/v17/.suo differ diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 0000000..1471822 --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,7 @@ +{ + "ExpandedNodes": [ + "" + ], + "SelectedNode": "\\DeleteFileFolder.git.sln", + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000..8502d63 Binary files /dev/null and b/.vs/slnx.sqlite differ diff --git a/DeleteFileFolder/DeleteFileFolder.cs b/DeleteFileFolder/DeleteFileFolder.cs index 4ad80c6..6c9f455 100644 --- a/DeleteFileFolder/DeleteFileFolder.cs +++ b/DeleteFileFolder/DeleteFileFolder.cs @@ -1,543 +1,552 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace Eugen.ESystem -{ - public class DeleteFileFolder - { - #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(); - static string icon = Application.StartupPath + "\\Info.bmp"; - - //Assembly Datum und Zeit - static DateTime value = AssemblyDateTime(); - static string date = value.ToShortDateString(); - static 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); - } - 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 program file - /// - public static string DllName { set; get; } - - /// - /// Contains the version of the program file - /// - public static string DllVersion { set; get; } - - /// - /// Contains the copyright notice - /// - public static string Copyright { set; get; } - - private static void SetDllInfo() - { - //Name, Version und Copyright setzen - DllName = dllName; - DllVersion = dllVersion; - Copyright = copyright; - } - #endregion - - /// - /// Constructor (for DLL-Information) - /// - static DeleteFileFolder() - { - SetDllInfo(); - } - - /// - /// Delete Files in a folder - /// - public DeleteFileFolder() - { - SetDllInfo(); - - Dir = false; - } - - List undeletableFiles = new List(); //Liste der unlöschbaren Dateien - - private long FileCounter { set; get; } //Anzahl der abgearbeiteten Dateien - private long DirectoryCounter { set; get; } //Anzahl der abgearbeiteten Verzeichnisse - - private long NumberOfFiles { set; get; } //Anzahl der Dateien - private long NumberOfDirectories { set; get; } //Anzahl der Verzeichnisse - public long PercentDone { set; get; } //Prozent abgeschlossen - private bool Dir { set; get; } //true = Verzeichnisse und Dateien; false = Nur Dateien - - /// - /// Deletes a singel File. - /// - /// A valid filename with path. - /// If the file was successfully deleted, 'null' is returned, otherwise the filename. - public string File(string fileName) - { - try - { - FileCounter++; //Zähler hochzählen - - System.IO.File.SetAttributes(fileName, FileAttributes.Normal); //Attribute zurücksetzen - System.IO.File.Delete(fileName); //Datei löschen - - return null; //Wenn löschen möglich war - } - catch (Exception) - { - return fileName; //Wenn löschen nicht möglich war - } - } - - /// - /// Deletes a singel File with the declared extension. - /// - /// A valid filename with path. - /// A valid file extension, e.g.: .txt - /// If the file was successfully deleted, 'null' is returned, otherwise the filename. - public string File(string fileName, string searchPattern) - { - try - { - if (Path.GetExtension(fileName) != searchPattern) - { - return null; - } - FileCounter++; //Zähler hochzählen - PercentDone = 100 / NumberOfFiles * FileCounter; - - System.IO.File.SetAttributes(fileName, FileAttributes.Normal); //Attribute zurücksetzen - System.IO.File.Delete(fileName); //Datei löschen - - return null; //Wenn löschen möglich war - } - catch (Exception) - { - return fileName; //Wenn löschen nicht möglich war - } - } - - - /// - /// Delete all files in a specified folder. - /// - /// Full path of a folder. - /// Returns a list of all undeletable files. - public List AllFiles(string path) - { - NumberOfFiles = CountFiles(path); //Anzahl der löschbaren Dateien - - FileCounter = 0; //Zähler zurücksetzen - string result = ""; //Rückgabewert - - undeletableFiles.Clear(); - - foreach (var file in Directory.GetFiles(path)) - { - result = File(file); //Dateien löschen - - //Berechnen wie viel Prozenz bereits gelöscht sind - if (Dir) - { - //Dateien und Verzeichnisse werden berücksichtigt - PercentDone = Convert.ToInt32(100 / Convert.ToDouble(NumberOfFiles + NumberOfDirectories) * Convert.ToDouble(FileCounter + DirectoryCounter)); - } - else - { - //Nur Dateien werden berücksichtigt - PercentDone = Convert.ToInt32(100 / Convert.ToDouble(NumberOfFiles) * Convert.ToDouble(FileCounter)); - OnEvent(PercentDone); - } - - if (result != null) - { - //Wenn ein Dateiname zurückgeliefert wird, dann in die Liste aufnehmen - undeletableFiles.Add(result); - } - } - return undeletableFiles; //Gibt die Liste der unlöschbaren Dateien zurück - } - - /// - /// Delete all files in a specified folder and subfolders. - /// - /// Full path of a folder. - /// If true, then all files in all subdirectories are also deleted. - /// - public List AllFiles(string path, bool subFolder) - { - NumberOfFiles = CountFiles(path, subFolder); //Anzahl der löschbaren Dateien - - FileCounter = 0; //Zähler zurücksetzen - - undeletableFiles.Clear(); //Liste der unlöschbaren Dateien zurücksetzen - - //Löscht alle Dateien und gibt die Liste der unlöschbaren Dateien zurück - return AllFilesInFolders(path, true); - } - - /// - /// Delete all files in a specified folder and subfolders with the declared extension. - /// - /// Full path of a folder. - /// If true, then all files in all subdirectories are also deleted. - /// A valid file extension, e.g.: .txt - /// Returns a list of all undeletable files. - public List AllFiles(string path, bool subFolder, string searchPattern) - { - NumberOfFiles = CountFiles(path, subFolder); //Anzahl der löschbaren Dateien - - FileCounter = 0; //Zähler zurücksetzen - - undeletableFiles.Clear(); //Liste der unlöschbaren Dateien zurücksetzen - - //Löscht alle Dateien und gibt die Liste der unlöschbaren Dateien zurück - return AllFilesInFolders(path, true, searchPattern); - } - - - private List AllFilesInFolders(string path, bool subFolder) - { - string result = ""; //Rückgabewert - - foreach (var file in Directory.GetFiles(path)) - { - result = File(file); //Dateien löschen - - //Berechnen wie viel Prozenz bereits gelöscht sind - if (Dir) - { - //Dateien un Verzeichnisse werden berücksichtigt - PercentDone = Convert.ToInt32(100 / Convert.ToDouble(NumberOfFiles + NumberOfDirectories) * Convert.ToDouble(FileCounter + DirectoryCounter)); - OnEvent(PercentDone); - } - else - { - //Nur Dateien werden berücksichtigt - PercentDone = Convert.ToInt32(100 / Convert.ToDouble(NumberOfFiles) * Convert.ToDouble(FileCounter)); - OnEvent(PercentDone); - } - - if (result != null) - { - //Wenn ein Dateiname zurückgeliefert wird, dann in die Liste aufnehmen - undeletableFiles.Add(result); - } - } - if (subFolder) - { - //Alle Dateien in den Unterverzeichnissen löschen - foreach (var sFolder in Directory.GetDirectories(path)) - { - AllFilesInFolders(sFolder, true); - } - } - - return undeletableFiles; //Gibt die Liste der unlöschbaren Dateien zurück - } - - private List AllFilesInFolders(string path, bool subFolder, string searchPattern) - { - string result = ""; //Rückgabewert - - foreach (var file in Directory.GetFiles(path)) - { - result = File(file, searchPattern); //Dateien löschen - - if (result != null) - { - //Wenn ein Dateiname zurückgeliefert wird, dann in die Liste aufnehmen - undeletableFiles.Add(result); - } - } - if (subFolder) - { - //Alle Dateien in den Unterverzeichnissen löschen - foreach (var sFolder in Directory.GetDirectories(path)) - { - AllFilesInFolders(sFolder, true, searchPattern); - } - } - - return undeletableFiles; //Gibt die Liste der unlöschbaren Dateien zurück - } - - - public string SingleDirectory(string path) - { - try - { - DirectoryCounter++; //Zähler hochzählen - - DirectoryInfo dirInfo = new DirectoryInfo(path); - dirInfo.Attributes = FileAttributes.Normal; - System.IO.Directory.Delete(path); - - return null; //Wenn löschen möglich war - } - catch (Exception) - { - return path; //Wenn löschen nicht möglich war - } - } - - public List AllDirectories(string path) - { - undeletableFiles.Clear(); - - if (!Directory.Exists(path)) - { - undeletableFiles.Add(path); - return undeletableFiles; - } - - Dir = true; - - NumberOfFiles = CountFiles(path, true); //Anzahl der löschbaren Dateien - NumberOfDirectories = CountDirectories(path); //Anzahl der löschbaren Verzeichnsse - - //Alle Dateien im Verzeichnis löschen - undeletableFiles.AddRange(AllFiles(path, true)); - - undeletableFiles = AllSubDirectories(path); //Alle Verzeichnisse löschen - - string result = SingleDirectory(path); - if (!String.IsNullOrEmpty(result)) - { - undeletableFiles.Add(result); - } - - //Berechnen wie viel Prozenz bereits gelöscht sind - PercentDone = Convert.ToInt32(100 / Convert.ToDouble(NumberOfFiles + NumberOfDirectories) * Convert.ToDouble(FileCounter + DirectoryCounter)); - OnEvent(PercentDone); - - return undeletableFiles; //Gibt die Liste der unlöschbaren Dateien und Verzeichnisse zurück - } - - public List AllSubDirectories(string path) - { - //Unterverzeichnisse löschen - foreach (var sFolder in Directory.GetDirectories(path)) - { - undeletableFiles.AddRange(AllSubDirectories(sFolder)); - - SingleDirectory(sFolder); - - //Berechnen wie viel Prozenz bereits gelöscht sind - PercentDone = Convert.ToInt32(100 / Convert.ToDouble(NumberOfFiles + NumberOfDirectories) * Convert.ToDouble(FileCounter + DirectoryCounter)); - OnEvent(PercentDone); - } - - return undeletableFiles; //Gibt die Liste der unlöschbaren Dateien und Verzeichnisse zurück - } - - /// - /// Counts all files in a specified folder. - /// - /// Full path of a folder. - /// The number of files. - public long CountFiles(string path) - { - long numberOfFiles = 0; //Anzahl der löschbaren Dateien - - foreach (var file in Directory.GetFiles(path)) - { - numberOfFiles++; //Zähler erhöhen - } - - return numberOfFiles; - } - - /// - /// Counts all files in a specified folder and all subfolders. - /// - /// Full path of a folder. - /// If true, then all files in all subdirectories are also counted. - /// The number of files. - public long CountFiles(string path, bool subFolder) - { - if (!Directory.Exists(path)) - { - return 0; //Wenn das Verzeichnis nicht existiert, dann 0 zurückgeben - } - - NumberOfFiles = 0; //Zähler zurücksetzen - - NumberOfFiles = CountAllFiles(path, subFolder); //Die Zählfunktion aufrufen - return NumberOfFiles; - } - - /// - /// Counts all files in a specified folder and subfolder with the declared extension. - /// - /// Full path of a folder. - /// If true, then all files in all subdirectories are also counted. - /// A valid file extension, e.g.: .txt - /// The number of files. - private long CountFile(string path, bool subFolder, string searchPattern) - { - long numberOfFiles = 0; //Anzahl der löschbaren Dateien - - foreach (var file in Directory.GetFiles(path)) - { - if (Path.GetExtension(file) == searchPattern) - { - numberOfFiles++; //Zähler erhöhen - } - } - if (subFolder) - { - foreach (var sFolder in Directory.GetDirectories(path)) - { - CountFile(sFolder, true, searchPattern); - } - } - - return numberOfFiles; - } - - private long CountAllFiles(string path, bool subFolder) - { - foreach (var file in Directory.GetFiles(path)) - { - NumberOfFiles++; //Zähler erhöhen - } - if (subFolder) - { - foreach (var sFolder in Directory.GetDirectories(path)) - { - CountAllFiles(sFolder, true); //Rekursiver Aufruf - } - } - - return NumberOfFiles; - } - - private long CountAllFiles(string path, bool subFolder, string searchPattern) - { - foreach (var file in Directory.GetFiles(path)) - { - if (Path.GetExtension(file) == searchPattern) - { - NumberOfFiles++; //Zähler erhöhen - } - } - if (subFolder) - { - foreach (var sFolder in Directory.GetDirectories(path)) - { - CountAllFiles(sFolder, true, searchPattern); //Rekursiver Aufruf - } - } - - return NumberOfFiles; - } - - /// - /// Counts all directoreis in a specified folder and all subfolders. - /// - /// Full path of a folder. - /// The number of directories. - public long CountDirectories(string path) - { - if (!Directory.Exists(path)) - { - return 0; //Wenn das Verzeichnis nicht existiert, dann 0 zurückgeben - } - - NumberOfDirectories = 0; //Zähler zurücksetzen - - NumberOfDirectories = CountAllDirectories(path) + 1; //Für das Root-Verzeichnis 1 dazu zählen - return NumberOfDirectories; - } - - private long CountAllDirectories(string path) - { - //Rekursive Aufruf - foreach (var sFolder in Directory.GetDirectories(path)) - { - CountAllDirectories(sFolder); - NumberOfDirectories++; - } - - return NumberOfDirectories; - } - - #region Event Handler - // Der Delegat muß die gleiche Signatur aufweisen wie die Eventhandler-Methode. - public delegate void EventDelegate(long result); - - // Das Event-Objekt ist vom Typ dieses Delegaten. - public event EventDelegate MyEvent; - - public void OnEvent(long result) - { - // Prüft ob das Event überhaupt einen Abonnenten hat. - if (MyEvent != null) - { - MyEvent(result); - } - } - #endregion - } -} +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Eugen.ESystem +{ + public class DeleteFileFolder + { + #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(); + static string icon = Application.StartupPath + "\\Info.bmp"; + + //Assembly Datum und Zeit + static DateTime value = AssemblyDateTime(); + static string date = value.ToShortDateString(); + static 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); + } + 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 program file + /// + public static string DllName { set; get; } + + /// + /// Contains the version of the program file + /// + public static string DllVersion { set; get; } + + /// + /// Contains the copyright notice + /// + public static string Copyright { set; get; } + + private static void SetDllInfo() + { + //Name, Version und Copyright setzen + DllName = dllName; + DllVersion = dllVersion; + Copyright = copyright; + } + #endregion + + /// + /// Constructor (for DLL-Information) + /// + static DeleteFileFolder() + { + SetDllInfo(); + } + + /// + /// Delete Files in a folder + /// + public DeleteFileFolder() + { + SetDllInfo(); + + Dir = false; + } + + public List undeletableFiles = new List(); //Liste der unlöschbaren Dateien + public List undeletableDirectories = new List(); //Liste der unlöschbaren Verzeichnisse + + private long FileCounter { set; get; } //Anzahl der abgearbeiteten Dateien + private long DirectoryCounter { set; get; } //Anzahl der abgearbeiteten Verzeichnisse + + private long NumberOfFiles { set; get; } //Anzahl der Dateien + private long NumberOfDirectories { set; get; } //Anzahl der Verzeichnisse + public long PercentDone { set; get; } //Prozent abgeschlossen + private bool Dir { set; get; } //true = Verzeichnisse und Dateien; false = Nur Dateien + + /// + /// Deletes a singel File. + /// + /// A valid filename with path. + /// If the file was successfully deleted, 'null' is returned, otherwise the filename. + public string File(string fileName) + { + try + { + FileCounter++; //Zähler hochzählen + + System.IO.File.SetAttributes(fileName, FileAttributes.Normal); //Attribute zurücksetzen + System.IO.File.Delete(fileName); //Datei löschen + + return null; //Wenn löschen möglich war + } + catch (Exception) + { + return fileName; //Wenn löschen nicht möglich war + } + } + + /// + /// Deletes a singel File with the declared extension. + /// + /// A valid filename with path. + /// A valid file extension, e.g.: .txt + /// If the file was successfully deleted, 'null' is returned, otherwise the filename. + public string File(string fileName, string searchPattern) + { + try + { + if (Path.GetExtension(fileName) != searchPattern) + { + return null; + } + FileCounter++; //Zähler hochzählen + PercentDone = 100 / NumberOfFiles * FileCounter; + + System.IO.File.SetAttributes(fileName, FileAttributes.Normal); //Attribute zurücksetzen + System.IO.File.Delete(fileName); //Datei löschen + + return null; //Wenn löschen möglich war + } + catch (Exception) + { + return fileName; //Wenn löschen nicht möglich war + } + } + + /// + /// Delete all files in a specified folder. + /// + /// Full path of a folder. + /// Returns a list of all undeletable files. + public List AllFiles(string path) + { + NumberOfFiles = CountFiles(path); //Anzahl der löschbaren Dateien + + FileCounter = 0; //Zähler zurücksetzen + string result = ""; //Rückgabewert + + undeletableFiles.Clear(); + + foreach (var file in Directory.GetFiles(path)) + { + result = File(file); //Dateien löschen + + //Berechnen wie viel Prozenz bereits gelöscht sind + if (Dir) + { + //Dateien und Verzeichnisse werden berücksichtigt + PercentDone = Convert.ToInt32(100 / Convert.ToDouble(NumberOfFiles + NumberOfDirectories) * Convert.ToDouble(FileCounter + DirectoryCounter)); + } + else + { + //Nur Dateien werden berücksichtigt + PercentDone = Convert.ToInt32(100 / Convert.ToDouble(NumberOfFiles) * Convert.ToDouble(FileCounter)); + OnEvent(PercentDone); + } + + if (result != null) + { + //Wenn ein Dateiname zurückgeliefert wird, dann in die Liste aufnehmen + undeletableFiles.Add(result); + } + } + return undeletableFiles; //Gibt die Liste der unlöschbaren Dateien zurück + } + + /// + /// Delete all files in a specified folder and subfolders. + /// + /// Full path of a folder. + /// If true, then all files in all subdirectories are also deleted. + /// + public List AllFiles(string path, bool subFolder) + { + NumberOfFiles = CountFiles(path, subFolder); //Anzahl der löschbaren Dateien + + FileCounter = 0; //Zähler zurücksetzen + + undeletableFiles.Clear(); //Liste der unlöschbaren Dateien zurücksetzen + + //Löscht alle Dateien und gibt die Liste der unlöschbaren Dateien zurück + return AllFilesInFolders(path, true); + } + + /// + /// Delete all files in a specified folder and subfolders with the declared extension. + /// + /// Full path of a folder. + /// If true, then all files in all subdirectories are also deleted. + /// A valid file extension, e.g.: .txt + /// Returns a list of all undeletable files. + public List AllFiles(string path, bool subFolder, string searchPattern) + { + NumberOfFiles = CountFiles(path, subFolder); //Anzahl der löschbaren Dateien + + FileCounter = 0; //Zähler zurücksetzen + + undeletableFiles.Clear(); //Liste der unlöschbaren Dateien zurücksetzen + + //Löscht alle Dateien und gibt die Liste der unlöschbaren Dateien zurück + return AllFilesInFolders(path, true, searchPattern); + } + + private List AllFilesInFolders(string path, bool subFolder) + { + string result = ""; //Rückgabewert + + foreach (var file in Directory.GetFiles(path)) + { + result = File(file); //Dateien löschen + + //Berechnen wie viel Prozenz bereits gelöscht sind + if (Dir) + { + //Dateien un Verzeichnisse werden berücksichtigt + PercentDone = Convert.ToInt32(100 / Convert.ToDouble(NumberOfFiles + NumberOfDirectories) * Convert.ToDouble(FileCounter + DirectoryCounter)); + OnEvent(PercentDone); + } + else + { + //Nur Dateien werden berücksichtigt + PercentDone = Convert.ToInt32(100 / Convert.ToDouble(NumberOfFiles) * Convert.ToDouble(FileCounter)); + OnEvent(PercentDone); + } + + if (result != null) + { + //Wenn ein Dateiname zurückgeliefert wird, dann in die Liste aufnehmen + undeletableFiles.Add(result); + } + } + if (subFolder) + { + //Alle Dateien in den Unterverzeichnissen löschen + foreach (var sFolder in Directory.GetDirectories(path)) + { + AllFilesInFolders(sFolder, true); + } + } + + return undeletableFiles; //Gibt die Liste der unlöschbaren Dateien zurück + } + + private List AllFilesInFolders(string path, bool subFolder, string searchPattern) + { + string result = ""; //Rückgabewert + + foreach (var file in Directory.GetFiles(path)) + { + result = File(file, searchPattern); //Dateien löschen + + if (result != null) + { + //Wenn ein Dateiname zurückgeliefert wird, dann in die Liste aufnehmen + undeletableFiles.Add(result); + } + } + if (subFolder) + { + //Alle Dateien in den Unterverzeichnissen löschen + foreach (var sFolder in Directory.GetDirectories(path)) + { + AllFilesInFolders(sFolder, true, searchPattern); + } + } + + return undeletableFiles; //Gibt die Liste der unlöschbaren Dateien zurück + } + + + public string SingleDirectory(string path) + { + try + { + DirectoryCounter++; //Zähler hochzählen + + DirectoryInfo dirInfo = new DirectoryInfo(path); + dirInfo.Attributes = FileAttributes.Normal; + System.IO.Directory.Delete(path); + + return null; //Wenn löschen möglich war + } + catch (Exception) + { + return path; //Wenn löschen nicht möglich war + } + } + + public List> AllDirectories(string path) + { + //object[] undeleteableFilesFolders = new object[2]; + List> undeleteableFilesFolders = new List>(); + + undeletableFiles.Clear(); + undeletableDirectories.Clear(); + + if (!Directory.Exists(path)) + { + undeletableDirectories.Add(path); + + undeleteableFilesFolders[0] = undeletableFiles; + undeleteableFilesFolders[1] = undeletableDirectories; + + return undeleteableFilesFolders; + } + + Dir = true; + + NumberOfFiles = CountFiles(path, true); //Anzahl der löschbaren Dateien + NumberOfDirectories = CountDirectories(path); //Anzahl der löschbaren Verzeichnsse + + //Alle Dateien im Verzeichnis löschen + undeletableFiles.AddRange(AllFiles(path, true)); + + undeletableDirectories = AllSubDirectories(path); //Alle Verzeichnisse löschen + + string result = SingleDirectory(path); + if (!String.IsNullOrEmpty(result)) + { + undeletableFiles.Add(result); + } + + //Berechnen wie viel Prozenz bereits gelöscht sind + PercentDone = Convert.ToInt32(100 / Convert.ToDouble(NumberOfFiles + NumberOfDirectories) * Convert.ToDouble(FileCounter + DirectoryCounter)); + OnEvent(PercentDone); + + undeleteableFilesFolders.Add(undeletableFiles); + undeleteableFilesFolders.Add(undeletableDirectories); + return undeleteableFilesFolders; //Gibt die Liste der unlöschbaren Dateien und Verzeichnisse zurück + } + + public List AllSubDirectories(string path) + { + //Unterverzeichnisse löschen + foreach (var sFolder in Directory.GetDirectories(path)) + { + undeletableFiles.AddRange(AllSubDirectories(sFolder)); + + SingleDirectory(sFolder); + + //Berechnen wie viel Prozenz bereits gelöscht sind + PercentDone = Convert.ToInt32(100 / Convert.ToDouble(NumberOfFiles + NumberOfDirectories) * Convert.ToDouble(FileCounter + DirectoryCounter)); + OnEvent(PercentDone); + } + + return undeletableFiles; //Gibt die Liste der unlöschbaren Dateien und Verzeichnisse zurück + } + + /// + /// Counts all files in a specified folder. + /// + /// Full path of a folder. + /// The number of files. + public long CountFiles(string path) + { + long numberOfFiles = 0; //Anzahl der löschbaren Dateien + + foreach (var file in Directory.GetFiles(path)) + { + numberOfFiles++; //Zähler erhöhen + } + + return numberOfFiles; + } + + /// + /// Counts all files in a specified folder and all subfolders. + /// + /// Full path of a folder. + /// If true, then all files in all subdirectories are also counted. + /// The number of files. + public long CountFiles(string path, bool subFolder) + { + if (!Directory.Exists(path)) + { + return 0; //Wenn das Verzeichnis nicht existiert, dann 0 zurückgeben + } + + NumberOfFiles = 0; //Zähler zurücksetzen + + NumberOfFiles = CountAllFiles(path, subFolder); //Die Zählfunktion aufrufen + return NumberOfFiles; + } + + /// + /// Counts all files in a specified folder and subfolder with the declared extension. + /// + /// Full path of a folder. + /// If true, then all files in all subdirectories are also counted. + /// A valid file extension, e.g.: .txt + /// The number of files. + private long CountFile(string path, bool subFolder, string searchPattern) + { + long numberOfFiles = 0; //Anzahl der löschbaren Dateien + + foreach (var file in Directory.GetFiles(path)) + { + if (Path.GetExtension(file) == searchPattern) + { + numberOfFiles++; //Zähler erhöhen + } + } + if (subFolder) + { + foreach (var sFolder in Directory.GetDirectories(path)) + { + CountFile(sFolder, true, searchPattern); + } + } + + return numberOfFiles; + } + + private long CountAllFiles(string path, bool subFolder) + { + foreach (var file in Directory.GetFiles(path)) + { + NumberOfFiles++; //Zähler erhöhen + } + if (subFolder) + { + foreach (var sFolder in Directory.GetDirectories(path)) + { + CountAllFiles(sFolder, true); //Rekursiver Aufruf + } + } + + return NumberOfFiles; + } + + private long CountAllFiles(string path, bool subFolder, string searchPattern) + { + foreach (var file in Directory.GetFiles(path)) + { + if (Path.GetExtension(file) == searchPattern) + { + NumberOfFiles++; //Zähler erhöhen + } + } + if (subFolder) + { + foreach (var sFolder in Directory.GetDirectories(path)) + { + CountAllFiles(sFolder, true, searchPattern); //Rekursiver Aufruf + } + } + + return NumberOfFiles; + } + + /// + /// Counts all directoreis in a specified folder and all subfolders. + /// + /// Full path of a folder. + /// The number of directories. + public long CountDirectories(string path) + { + if (!Directory.Exists(path)) + { + return 0; //Wenn das Verzeichnis nicht existiert, dann 0 zurückgeben + } + + NumberOfDirectories = 0; //Zähler zurücksetzen + + NumberOfDirectories = CountAllDirectories(path) + 1; //Für das Root-Verzeichnis 1 dazu zählen + return NumberOfDirectories; + } + + private long CountAllDirectories(string path) + { + //Rekursive Aufruf + foreach (var sFolder in Directory.GetDirectories(path)) + { + CountAllDirectories(sFolder); + NumberOfDirectories++; + } + + return NumberOfDirectories; + } + + #region Event Handler + // Der Delegat muß die gleiche Signatur aufweisen wie die Eventhandler-Methode. + public delegate void EventDelegate(long result); + + // Das Event-Objekt ist vom Typ dieses Delegaten. + public event EventDelegate MyEvent; + + public void OnEvent(long result) + { + // Prüft ob das Event überhaupt einen Abonnenten hat. + if (MyEvent != null) + { + MyEvent(result); + } + } + #endregion + } +} diff --git a/DeleteFileFolder/bin/Debug/hedff.dll b/DeleteFileFolder/bin/Debug/hedff.dll index 4ecf314..157362b 100644 Binary files a/DeleteFileFolder/bin/Debug/hedff.dll and b/DeleteFileFolder/bin/Debug/hedff.dll differ diff --git a/DeleteFileFolder/bin/Debug/hedff.pdb b/DeleteFileFolder/bin/Debug/hedff.pdb index a2424a0..da1c295 100644 Binary files a/DeleteFileFolder/bin/Debug/hedff.pdb and b/DeleteFileFolder/bin/Debug/hedff.pdb differ diff --git a/DeleteFileFolder/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/DeleteFileFolder/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs index 3871b18..057ed7f 100644 --- a/DeleteFileFolder/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs +++ b/DeleteFileFolder/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs @@ -1,4 +1,4 @@ -// -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] diff --git a/DeleteFileFolder/obj/Debug/DeleteFileFolder.csproj.AssemblyReference.cache b/DeleteFileFolder/obj/Debug/DeleteFileFolder.csproj.AssemblyReference.cache new file mode 100644 index 0000000..6227aa3 Binary files /dev/null and b/DeleteFileFolder/obj/Debug/DeleteFileFolder.csproj.AssemblyReference.cache differ diff --git a/DeleteFileFolder/obj/Debug/DeleteFileFolder.csproj.CoreCompileInputs.cache b/DeleteFileFolder/obj/Debug/DeleteFileFolder.csproj.CoreCompileInputs.cache index d52ad46..53c0b24 100644 --- a/DeleteFileFolder/obj/Debug/DeleteFileFolder.csproj.CoreCompileInputs.cache +++ b/DeleteFileFolder/obj/Debug/DeleteFileFolder.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -99ea030e883342fe107d375c9fe986f9d159745f +99ea030e883342fe107d375c9fe986f9d159745f diff --git a/DeleteFileFolder/obj/Debug/DeleteFileFolder.csproj.FileListAbsolute.txt b/DeleteFileFolder/obj/Debug/DeleteFileFolder.csproj.FileListAbsolute.txt index e28f36e..30f1e25 100644 --- a/DeleteFileFolder/obj/Debug/DeleteFileFolder.csproj.FileListAbsolute.txt +++ b/DeleteFileFolder/obj/Debug/DeleteFileFolder.csproj.FileListAbsolute.txt @@ -1,11 +1,12 @@ -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\DeleteFileFolder\bin\Debug\DeleteFileFolder.dll -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\DeleteFileFolder\bin\Debug\DeleteFileFolder.pdb -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\DeleteFileFolder\obj\Debug\DeleteFileFolder.csprojAssemblyReference.cache -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\DeleteFileFolder\obj\Debug\DeleteFileFolder.csproj.CoreCompileInputs.cache -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\DeleteFileFolder\obj\Debug\DeleteFileFolder.dll -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\DeleteFileFolder\obj\Debug\DeleteFileFolder.pdb -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\DeleteFileFolder\bin\Debug\hedff.dll -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\DeleteFileFolder\bin\Debug\hedff.pdb -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\DeleteFileFolder\obj\Debug\DeleteFileFolder.csproj.CoreCompileInputs.cache -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\DeleteFileFolder\obj\Debug\hedff.dll -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\DeleteFileFolder\obj\Debug\hedff.pdb +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\DeleteFileFolder\bin\Debug\DeleteFileFolder.dll +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\DeleteFileFolder\bin\Debug\DeleteFileFolder.pdb +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\DeleteFileFolder\obj\Debug\DeleteFileFolder.csprojAssemblyReference.cache +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\DeleteFileFolder\obj\Debug\DeleteFileFolder.csproj.CoreCompileInputs.cache +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\DeleteFileFolder\obj\Debug\DeleteFileFolder.dll +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\DeleteFileFolder\obj\Debug\DeleteFileFolder.pdb +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\DeleteFileFolder\bin\Debug\hedff.dll +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\DeleteFileFolder\bin\Debug\hedff.pdb +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\DeleteFileFolder\obj\Debug\DeleteFileFolder.csproj.CoreCompileInputs.cache +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\DeleteFileFolder\obj\Debug\hedff.dll +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\DeleteFileFolder\obj\Debug\hedff.pdb +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\DeleteFileFolder\obj\Debug\DeleteFileFolder.csproj.AssemblyReference.cache diff --git a/DeleteFileFolder/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/DeleteFileFolder/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache index b754436..68c56ff 100644 Binary files a/DeleteFileFolder/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/DeleteFileFolder/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/DeleteFileFolder/obj/Debug/hedff.dll b/DeleteFileFolder/obj/Debug/hedff.dll index 4ecf314..157362b 100644 Binary files a/DeleteFileFolder/obj/Debug/hedff.dll and b/DeleteFileFolder/obj/Debug/hedff.dll differ diff --git a/DeleteFileFolder/obj/Debug/hedff.pdb b/DeleteFileFolder/obj/Debug/hedff.pdb index a2424a0..da1c295 100644 Binary files a/DeleteFileFolder/obj/Debug/hedff.pdb and b/DeleteFileFolder/obj/Debug/hedff.pdb differ diff --git a/DeleteFileFolder/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/DeleteFileFolder/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs new file mode 100644 index 0000000..057ed7f --- /dev/null +++ b/DeleteFileFolder/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] diff --git a/Test_DeleteFileFolder/Form1.cs b/Test_DeleteFileFolder/Form1.cs index a28263b..429373b 100644 --- a/Test_DeleteFileFolder/Form1.cs +++ b/Test_DeleteFileFolder/Form1.cs @@ -1,236 +1,245 @@ -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; -using Eugen.ESystem; - -namespace Test_DeleteFileFolder -{ - public partial class Form1 : Form - { - #region Version und Copyright - // Version und Copyright - string programName = Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); //Den Programmnamen auslesen - string programVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); - static object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false); - string copyright = GenerateCopyright(); - string icon = Application.StartupPath + "\\Info.bmp"; - //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 = ((AssemblyCopyrightAttribute)attributes[0]).Copyright; - //return startYear.Remove(0, startYear.LastIndexOf(" ") + 1); - string startYear = ""; - if (((AssemblyCopyrightAttribute)attributes[0]).Copyright.Contains("Copyright © ")) - { - startYear = ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace("Copyright © ", ""); - while (startYear.StartsWith(" ")) - { - startYear = startYear.Remove(0, 1); - } - 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 String.Concat(((AssemblyCopyrightAttribute)attributes[0]).Copyright, "-", currentYear); - return ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace(startYear, String.Concat(startYear, "-", currentYear)); - } - } - #endregion - - #region Programm-Info - /// - /// Contains the name of the program file - /// - public static string ProgramName { set; get; } - - /// - /// Contains the version of the program file - /// - public static string ProgramVersion { set; get; } - - /// - /// Contains the copyright notice - /// - public static string Copyright { set; get; } - - private void SetProgramInfo() - { - //Name, Version und Copyright setzen - ProgramName = programName; - ProgramVersion = programVersion; - Copyright = copyright; - } - #endregion - - public Form1() - { - SetProgramInfo(); - InitializeComponent(); - } - - string fileName = ""; - bool allFiles = false; - bool folders = false; - bool subFolders = false; - bool countOnly = false; - - private void buttonCancel_Click(object sender, EventArgs e) - { - this.Close(); - } - - private void buttonDelete_Click(object sender, EventArgs e) - { - string undeletableFile = ""; - List undeletableFiles = new List(); - string message = ""; - - //In diesem Bereich wird das Löschen ausgeführt --------------------- - DeleteFileFolder Del = new DeleteFileFolder(); - // Hier wird das Event abonniert. - // Das kann jede Klasse auf die gleiche Weise machen. - Del.MyEvent += new DeleteFileFolder.EventDelegate(EventHandler); - - if (checkBoxCountOnly.Checked) - { - labelDeletableFiles.Text = "Number of deletable Files: " + Del.CountFiles(textBoxFileName.Text, checkBoxSubdirectories.Checked); - labelDeletableDirectories.Text = "Number of deletable Directories: \t" + Del.CountDirectories(textBoxFileName.Text); - } - else - { - if (radioButtonFileOnly.Checked) - { - //Dateien löschen - if (radioButtonSingleFile.Checked) - { - undeletableFile = Del.File(textBoxFileName.Text); //Eine einzelen Datei löschen - progressBar.Value = 100; - } - else - { - if (!checkBoxSubdirectories.Checked) - { - undeletableFiles = Del.AllFiles(textBoxFileName.Text); //Alle Dateien eines Verzeichnisses löschen - } - else - { - undeletableFiles = Del.AllFiles(textBoxFileName.Text, true); //Alle Dateien eines Verzeichnisses und aller Unterverzeichnisse löschen - } - } - } - else - { - undeletableFiles = Del.AllDirectories(textBoxFileName.Text); - } - } - - //Nicht löschbare Dateien und Verzeichnisse anzeigen - if (undeletableFiles != null & undeletableFiles.Any()) - { - message = "Undeleteable elements:\n"; - - foreach (var element in undeletableFiles) - { - message += element + "\n"; - } - MessageBox.Show(message); - } - } - - private void textBoxFileName_TextChanged(object sender, EventArgs e) - { - ClearProgressBar(); - fileName = textBoxFileName.Text; - } - - private void radioButtonDirectory_CheckedChanged(object sender, EventArgs e) - { - ClearProgressBar(); - } - - private void radioButtonFileOnly_CheckedChanged(object sender, EventArgs e) - { - ClearProgressBar(); - } - - private void radioButtonSingleFile_CheckedChanged(object sender, EventArgs e) - { - ClearProgressBar(); - } - - private void radioButtonAllFiles_CheckedChanged(object sender, EventArgs e) - { - ClearProgressBar(); - } - - private void checkBoxSubdirectories_CheckedChanged(object sender, EventArgs e) - { - ClearProgressBar(); - subFolders = !subFolders; - } - - private void checkBoxCountOnly_CheckedChanged(object sender, EventArgs e) - { - ClearProgressBar(); - countOnly = !countOnly; - } - - private void ClearProgressBar() - { - //Setzt die Progressbar auf 0% zurück - progressBar.Value = 0; - progressBar.Refresh(); - } - - #region Event Handler - void EventHandler(long value) - { - //Die ProgressBar updaten - progressBar.Value = Convert.ToInt32(value); - progressBar.Refresh(); - } - #endregion - } -} +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; +using Eugen.ESystem; + +namespace Test_DeleteFileFolder +{ + public partial class Form1 : Form + { + #region Version und Copyright + // Version und Copyright + string programName = Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); //Den Programmnamen auslesen + string programVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); + static object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false); + string copyright = GenerateCopyright(); + string icon = Application.StartupPath + "\\Info.bmp"; + //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 = ((AssemblyCopyrightAttribute)attributes[0]).Copyright; + //return startYear.Remove(0, startYear.LastIndexOf(" ") + 1); + string startYear = ""; + if (((AssemblyCopyrightAttribute)attributes[0]).Copyright.Contains("Copyright © ")) + { + startYear = ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace("Copyright © ", ""); + while (startYear.StartsWith(" ")) + { + startYear = startYear.Remove(0, 1); + } + 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 String.Concat(((AssemblyCopyrightAttribute)attributes[0]).Copyright, "-", currentYear); + return ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace(startYear, String.Concat(startYear, "-", currentYear)); + } + } + #endregion + + #region Programm-Info + /// + /// Contains the name of the program file + /// + public static string ProgramName { set; get; } + + /// + /// Contains the version of the program file + /// + public static string ProgramVersion { set; get; } + + /// + /// Contains the copyright notice + /// + public static string Copyright { set; get; } + + private void SetProgramInfo() + { + //Name, Version und Copyright setzen + ProgramName = programName; + ProgramVersion = programVersion; + Copyright = copyright; + } + #endregion + + public Form1() + { + SetProgramInfo(); + InitializeComponent(); + } + + string fileName = ""; + bool subFolders = false; + bool countOnly = false; + + private void buttonCancel_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void buttonDelete_Click(object sender, EventArgs e) + { + //string undeletableElements = ""; + string undeletableFile = ""; + List undeletableFiles = new List(); + List undeletableFolders = new List(); + List> undeleteableFilesFolders = new List>(); + string message = ""; + + //In diesem Bereich wird das Löschen ausgeführt --------------------- + DeleteFileFolder Del = new DeleteFileFolder(); + // Hier wird das Event abonniert. + // Das kann jede Klasse auf die gleiche Weise machen. + Del.MyEvent += new DeleteFileFolder.EventDelegate(EventHandler); + + if (checkBoxCountOnly.Checked) + { + labelDeletableFiles.Text = "Number of deletable Files: " + Del.CountFiles(textBoxFileName.Text, checkBoxSubdirectories.Checked); + labelDeletableDirectories.Text = "Number of deletable Directories: \t" + Del.CountDirectories(textBoxFileName.Text); + } + else + { + if (radioButtonFileOnly.Checked) + { + //Dateien löschen + if (radioButtonSingleFile.Checked) + { + undeletableFile = Del.File(textBoxFileName.Text); //Eine einzelen Datei löschen + progressBar.Value = 100; + } + else + { + if (!checkBoxSubdirectories.Checked) + { + undeletableFiles = Del.AllFiles(textBoxFileName.Text); //Alle Dateien eines Verzeichnisses löschen + } + else + { + undeletableFiles = Del.AllFiles(textBoxFileName.Text, true); //Alle Dateien eines Verzeichnisses und aller Unterverzeichnisse löschen + } + } + } + else + { + undeleteableFilesFolders = Del.AllDirectories(textBoxFileName.Text); //Alle Verzeichnisse löschen + } + } + + //Nicht löschbare Dateien und Verzeichnisse anzeigen + if (undeleteableFilesFolders != null & undeletableFiles.Any()) + { + message = "Undeleteable elements:\n"; + + foreach (var item in undeleteableFilesFolders) + { + foreach (var element in item) + { + message += element + "\n"; + } + } + + //foreach (var element in undeletableFiles) + //{ + // message += element + "\n"; + //} + MessageBox.Show(message); + } + } + + private void textBoxFileName_TextChanged(object sender, EventArgs e) + { + ClearProgressBar(); + fileName = textBoxFileName.Text; + } + + private void radioButtonDirectory_CheckedChanged(object sender, EventArgs e) + { + ClearProgressBar(); + } + + private void radioButtonFileOnly_CheckedChanged(object sender, EventArgs e) + { + ClearProgressBar(); + } + + private void radioButtonSingleFile_CheckedChanged(object sender, EventArgs e) + { + ClearProgressBar(); + } + + private void radioButtonAllFiles_CheckedChanged(object sender, EventArgs e) + { + ClearProgressBar(); + } + + private void checkBoxSubdirectories_CheckedChanged(object sender, EventArgs e) + { + ClearProgressBar(); + subFolders = !subFolders; + } + + private void checkBoxCountOnly_CheckedChanged(object sender, EventArgs e) + { + ClearProgressBar(); + countOnly = !countOnly; + } + + private void ClearProgressBar() + { + //Setzt die Progressbar auf 0% zurück + progressBar.Value = 0; + progressBar.Refresh(); + } + + #region Event Handler + void EventHandler(long value) + { + //Die ProgressBar updaten + progressBar.Value = Convert.ToInt32(value); + progressBar.Refresh(); + } + #endregion + } +} diff --git a/Test_DeleteFileFolder/bin/Debug/Test_DeleteFileFolder.exe b/Test_DeleteFileFolder/bin/Debug/Test_DeleteFileFolder.exe index c01369f..e425ab3 100644 Binary files a/Test_DeleteFileFolder/bin/Debug/Test_DeleteFileFolder.exe and b/Test_DeleteFileFolder/bin/Debug/Test_DeleteFileFolder.exe differ diff --git a/Test_DeleteFileFolder/bin/Debug/Test_DeleteFileFolder.pdb b/Test_DeleteFileFolder/bin/Debug/Test_DeleteFileFolder.pdb index 9880711..65b5ae3 100644 Binary files a/Test_DeleteFileFolder/bin/Debug/Test_DeleteFileFolder.pdb and b/Test_DeleteFileFolder/bin/Debug/Test_DeleteFileFolder.pdb differ diff --git a/Test_DeleteFileFolder/bin/Debug/hedff.dll b/Test_DeleteFileFolder/bin/Debug/hedff.dll index 4ecf314..157362b 100644 Binary files a/Test_DeleteFileFolder/bin/Debug/hedff.dll and b/Test_DeleteFileFolder/bin/Debug/hedff.dll differ diff --git a/Test_DeleteFileFolder/bin/Debug/hedff.pdb b/Test_DeleteFileFolder/bin/Debug/hedff.pdb index a2424a0..da1c295 100644 Binary files a/Test_DeleteFileFolder/bin/Debug/hedff.pdb and b/Test_DeleteFileFolder/bin/Debug/hedff.pdb differ diff --git a/Test_DeleteFileFolder/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/Test_DeleteFileFolder/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs index 3871b18..057ed7f 100644 --- a/Test_DeleteFileFolder/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs +++ b/Test_DeleteFileFolder/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs @@ -1,4 +1,4 @@ -// -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] diff --git a/Test_DeleteFileFolder/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/Test_DeleteFileFolder/obj/Debug/DesignTimeResolveAssemblyReferences.cache index e44d05b..4111691 100644 Binary files a/Test_DeleteFileFolder/obj/Debug/DesignTimeResolveAssemblyReferences.cache and b/Test_DeleteFileFolder/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/Test_DeleteFileFolder/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Test_DeleteFileFolder/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache index a133732..847fcbc 100644 Binary files a/Test_DeleteFileFolder/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/Test_DeleteFileFolder/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.csproj.AssemblyReference.cache b/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.csproj.AssemblyReference.cache index fc9c687..a9dafc8 100644 Binary files a/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.csproj.AssemblyReference.cache and b/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.csproj.AssemblyReference.cache differ diff --git a/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.csproj.FileListAbsolute.txt b/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.csproj.FileListAbsolute.txt index 720fe17..db8e43b 100644 --- a/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.csproj.FileListAbsolute.txt +++ b/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.csproj.FileListAbsolute.txt @@ -1,26 +1,27 @@ -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csprojAssemblyReference.cache -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.Form1.resources -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.Properties.Resources.resources -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csproj.GenerateResource.cache -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csproj.CoreCompileInputs.cache -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\Test_DeleteFileFolder.exe.config -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\Test_DeleteFileFolder.exe -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\Test_DeleteFileFolder.pdb -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\DeleteFileFolder.dll -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\DeleteFileFolder.pdb -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csproj.CopyComplete -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.exe -H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.pdb -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\Test_DeleteFileFolder.exe.config -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\Test_DeleteFileFolder.exe -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\Test_DeleteFileFolder.pdb -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\hedff.dll -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\hedff.pdb -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.Form1.resources -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.Properties.Resources.resources -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csproj.GenerateResource.cache -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csproj.CoreCompileInputs.cache -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csproj.CopyComplete -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.exe -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.pdb -H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csproj.AssemblyReference.cache +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csprojAssemblyReference.cache +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.Form1.resources +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.Properties.Resources.resources +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csproj.GenerateResource.cache +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csproj.CoreCompileInputs.cache +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\Test_DeleteFileFolder.exe.config +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\Test_DeleteFileFolder.exe +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\Test_DeleteFileFolder.pdb +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\DeleteFileFolder.dll +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\DeleteFileFolder.pdb +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csproj.CopyComplete +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.exe +H:\Programmieren\Git-Repository\VisualStudio\2017\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.pdb +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\Test_DeleteFileFolder.exe.config +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\Test_DeleteFileFolder.exe +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\Test_DeleteFileFolder.pdb +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\hedff.dll +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\bin\Debug\hedff.pdb +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.Form1.resources +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.Properties.Resources.resources +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csproj.GenerateResource.cache +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csproj.CoreCompileInputs.cache +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csproj.CopyComplete +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.exe +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.pdb +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csproj.AssemblyReference.cache +H:\Programmieren\Git-WorkRepository\VisualStudio\_DLL\DeleteFileFolder.git\Test_DeleteFileFolder\obj\Debug\Test_DeleteFileFolder.csproj.SuggestedBindingRedirects.cache diff --git a/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.csproj.GenerateResource.cache b/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.csproj.GenerateResource.cache index cb98167..62a1c4d 100644 Binary files a/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.csproj.GenerateResource.cache and b/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.csproj.GenerateResource.cache differ diff --git a/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.csproj.SuggestedBindingRedirects.cache b/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.csproj.SuggestedBindingRedirects.cache new file mode 100644 index 0000000..e69de29 diff --git a/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.exe b/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.exe index c01369f..e425ab3 100644 Binary files a/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.exe and b/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.exe differ diff --git a/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.pdb b/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.pdb index 9880711..65b5ae3 100644 Binary files a/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.pdb and b/Test_DeleteFileFolder/obj/Debug/Test_DeleteFileFolder.pdb differ diff --git a/Test_DeleteFileFolder/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/Test_DeleteFileFolder/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs new file mode 100644 index 0000000..057ed7f --- /dev/null +++ b/Test_DeleteFileFolder/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] diff --git a/Test_DeleteFileFolder/obj/Release/Test_DeleteFileFolder.csproj.AssemblyReference.cache b/Test_DeleteFileFolder/obj/Release/Test_DeleteFileFolder.csproj.AssemblyReference.cache new file mode 100644 index 0000000..57dda5c Binary files /dev/null and b/Test_DeleteFileFolder/obj/Release/Test_DeleteFileFolder.csproj.AssemblyReference.cache differ