diff --git a/Filesystem/File.vb b/Filesystem/File.vb
new file mode 100644
index 00000000..45f25143
--- /dev/null
+++ b/Filesystem/File.vb
@@ -0,0 +1,88 @@
+Imports System.IO
+Imports DigitalData.Modules.Logging
+
+''' File
+''' 0.0.0.1
+''' 11.10.2018
+'''
+''' Module that provides variouse File operations
+'''
+'''
+''' NLog, >= 4.5.8
+'''
+'''
+''' LogConfig, DigitalData.Module.Logging.LogConfig
+''' A LogConfig object
+'''
+'''
+'''
+'''
+'''
+'''
+'''
+Public Class File
+ Private ReadOnly _logger As Logger
+ Private ReadOnly _logConfig As LogConfig
+
+ Public Sub New(LogConfig As LogConfig)
+ _logConfig = LogConfig
+ _logger = LogConfig.GetLogger()
+ End Sub
+
+ '''
+ ''' Removes files in a directory filtered by filename, extension and last write date
+ '''
+ ''' The directory in which files will be deleted
+ ''' Only delete files which are older than x days. Must be between 0 and 1000 days.
+ ''' A filename filter which will be checked
+ ''' A file extension which will be checked
+ ''' Should the function continue with deleting when a file could not be deleted?
+ ''' True if all files were deleted or if no files were deleted, otherwise false
+ Public Function RemoveFiles(Path As String, FileKeepTime As Integer, FileBaseName As String, Optional FileExtension As String = "log", Optional ContinueOnError As Boolean = True) As Boolean
+ If Not Directory.Exists(Path) Then
+ _logger.Warn("Directory {0} does not exist")
+ Return False
+ End If
+
+ If FileKeepTime < 0 Or FileKeepTime > 1000 Then
+ Throw New ArgumentOutOfRangeException("FileKeepTime must be an integer between 0 and 1000")
+ End If
+
+ Dim oUnableToDeleteCounter = 0
+ Dim oDirectory As New DirectoryInfo(Path)
+ Dim oDateLimit As DateTime = DateTime.Now.AddDays(FileKeepTime)
+ Dim oFiles As List(Of FileInfo) = oDirectory.
+ EnumerateFiles($"*{FileBaseName}*").
+ Where(Function(oFileInfo As FileInfo)
+ Return oFileInfo.Extension = FileExtension And oFileInfo.LastWriteTime < oDateLimit
+ End Function)
+
+ If oFiles.Count = 0 Then
+ _logger.Debug("No files found that match the criterias.")
+ Return True
+ End If
+
+ _logger.Debug("Deleting old files (Found {0}).", oFiles.Count)
+
+ For Each oFile As FileInfo In oFiles
+ Try
+ oFile.Delete()
+ Catch ex As Exception
+ If ContinueOnError = False Then
+ _logger.Warn("Deleting files was aborted at file {0}.", oFile.FullName)
+ Return False
+ End If
+ oUnableToDeleteCounter = oUnableToDeleteCounter + 1
+ _logger.Warn("File {0} could not be deleted!")
+ End Try
+ Next
+
+ If oUnableToDeleteCounter > 0 Then
+ _logger.Debug("Old files partially removed. {0} files could not be removed.", oUnableToDeleteCounter)
+ Else
+ _logger.Debug("Old files removed.")
+ End If
+
+ Return True
+ End Function
+End Class
diff --git a/Filesystem/Filesystem.vbproj b/Filesystem/Filesystem.vbproj
new file mode 100644
index 00000000..48eaf125
--- /dev/null
+++ b/Filesystem/Filesystem.vbproj
@@ -0,0 +1,119 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {991D0231-4623-496D-8BD0-9CA906029CBC}
+ Library
+ DigitalData.Modules.Filesystem
+ DigitalData.Modules.Filesystem
+ 512
+ Windows
+ v4.6.1
+
+
+ true
+ full
+ true
+ true
+ bin\Debug\
+ DigitalData.Modules.Filesystem.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ pdbonly
+ false
+ true
+ true
+ bin\Release\
+ DigitalData.Modules.Filesystem.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ On
+
+
+ Binary
+
+
+ Off
+
+
+ On
+
+
+
+
+ ..\packages\NLog.4.5.10\lib\net45\NLog.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+ Application.myapp
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+ VbMyResourcesResXFileCodeGenerator
+ Resources.Designer.vb
+ My.Resources
+ Designer
+
+
+
+
+ MyApplicationCodeGenerator
+ Application.Designer.vb
+
+
+ SettingsSingleFileGenerator
+ My
+ Settings.Designer.vb
+
+
+
+
+
+ {903b2d7d-3b80-4be9-8713-7447b704e1b0}
+ Logging
+
+
+
+
\ No newline at end of file
diff --git a/Filesystem/My Project/Application.Designer.vb b/Filesystem/My Project/Application.Designer.vb
new file mode 100644
index 00000000..8ab460ba
--- /dev/null
+++ b/Filesystem/My Project/Application.Designer.vb
@@ -0,0 +1,13 @@
+'------------------------------------------------------------------------------
+'
+' Dieser Code wurde von einem Tool generiert.
+' Laufzeitversion:4.0.30319.42000
+'
+' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+' der Code erneut generiert wird.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
diff --git a/Filesystem/My Project/Application.myapp b/Filesystem/My Project/Application.myapp
new file mode 100644
index 00000000..758895de
--- /dev/null
+++ b/Filesystem/My Project/Application.myapp
@@ -0,0 +1,10 @@
+
+
+ false
+ false
+ 0
+ true
+ 0
+ 1
+ true
+
diff --git a/Filesystem/My Project/AssemblyInfo.vb b/Filesystem/My Project/AssemblyInfo.vb
new file mode 100644
index 00000000..d3b46582
--- /dev/null
+++ b/Filesystem/My Project/AssemblyInfo.vb
@@ -0,0 +1,35 @@
+Imports System
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' Allgemeine Informationen über eine Assembly werden über die folgenden
+' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
+' die einer Assembly zugeordnet sind.
+
+' Werte der Assemblyattribute überprüfen
+
+
+
+
+
+
+
+
+
+
+'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird.
+
+
+' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
+'
+' Hauptversion
+' Nebenversion
+' Buildnummer
+' Revision
+'
+' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
+' übernehmen, indem Sie "*" eingeben:
+'
+
+
+
diff --git a/Filesystem/My Project/Resources.Designer.vb b/Filesystem/My Project/Resources.Designer.vb
new file mode 100644
index 00000000..97935ddf
--- /dev/null
+++ b/Filesystem/My Project/Resources.Designer.vb
@@ -0,0 +1,63 @@
+'------------------------------------------------------------------------------
+'
+' Dieser Code wurde von einem Tool generiert.
+' Laufzeitversion:4.0.30319.42000
+'
+' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+' der Code erneut generiert wird.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+Imports System
+
+Namespace My.Resources
+
+ 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
+ '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
+ 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
+ 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
+ '''
+ ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
+ '''
+ _
+ Friend Module Resources
+
+ Private resourceMan As Global.System.Resources.ResourceManager
+
+ Private resourceCulture As Global.System.Globalization.CultureInfo
+
+ '''
+ ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
+ '''
+ _
+ Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
+ Get
+ If Object.ReferenceEquals(resourceMan, Nothing) Then
+ Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("DigitalData.Modules.Filesystem.Resources", GetType(Resources).Assembly)
+ resourceMan = temp
+ End If
+ Return resourceMan
+ End Get
+ End Property
+
+ '''
+ ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
+ ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
+ '''
+ _
+ Friend Property Culture() As Global.System.Globalization.CultureInfo
+ Get
+ Return resourceCulture
+ End Get
+ Set
+ resourceCulture = value
+ End Set
+ End Property
+ End Module
+End Namespace
diff --git a/Filesystem/My Project/Resources.resx b/Filesystem/My Project/Resources.resx
new file mode 100644
index 00000000..af7dbebb
--- /dev/null
+++ b/Filesystem/My Project/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Filesystem/My Project/Settings.Designer.vb b/Filesystem/My Project/Settings.Designer.vb
new file mode 100644
index 00000000..150844cf
--- /dev/null
+++ b/Filesystem/My Project/Settings.Designer.vb
@@ -0,0 +1,73 @@
+'------------------------------------------------------------------------------
+'
+' Dieser Code wurde von einem Tool generiert.
+' Laufzeitversion:4.0.30319.42000
+'
+' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+' der Code erneut generiert wird.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+
+Namespace My
+
+ _
+ Partial Friend NotInheritable Class MySettings
+ Inherits Global.System.Configuration.ApplicationSettingsBase
+
+ Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
+
+#Region "Automatische My.Settings-Speicherfunktion"
+#If _MyType = "WindowsForms" Then
+ Private Shared addedHandler As Boolean
+
+ Private Shared addedHandlerLockObject As New Object
+
+ _
+ Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
+ If My.Application.SaveMySettingsOnExit Then
+ My.Settings.Save()
+ End If
+ End Sub
+#End If
+#End Region
+
+ Public Shared ReadOnly Property [Default]() As MySettings
+ Get
+
+#If _MyType = "WindowsForms" Then
+ If Not addedHandler Then
+ SyncLock addedHandlerLockObject
+ If Not addedHandler Then
+ AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
+ addedHandler = True
+ End If
+ End SyncLock
+ End If
+#End If
+ Return defaultInstance
+ End Get
+ End Property
+ End Class
+End Namespace
+
+Namespace My
+
+ _
+ Friend Module MySettingsProperty
+
+ _
+ Friend ReadOnly Property Settings() As Global.DigitalData.Modules.Filesystem.My.MySettings
+ Get
+ Return Global.DigitalData.Modules.Filesystem.My.MySettings.Default
+ End Get
+ End Property
+ End Module
+End Namespace
diff --git a/Filesystem/My Project/Settings.settings b/Filesystem/My Project/Settings.settings
new file mode 100644
index 00000000..85b890b3
--- /dev/null
+++ b/Filesystem/My Project/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/Filesystem/packages.config b/Filesystem/packages.config
new file mode 100644
index 00000000..9764f16f
--- /dev/null
+++ b/Filesystem/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file