Erweiterungsmethoden (C# 3.0) die es erlauben Datei und Ordneroptionen über den Pfad (string) abzufragen.
Das Erstellen von FileInfo oder DirectoryInfo Objekten fällt somit weg.
using System;
using System.Collections.Generic;
namespace AdString.IO
{
using System.IO;
public static class IOExtensions
{
public enum IOType { File, Directory, DontExist };
/// <summary>
/// Gibt die Endung einer Datei zurück
/// </summary>
/// <param name="__path">Pfad der Datei</param>
/// <returns>Endung ohne Punkt</returns>
public static string _Extenstion(this String __path)
{
if (File.Exists(__path))
return new FileInfo(__path).Extension.Substring(1);
else
throw new FileNotFoundException("Datei existiert nicht.");
}
/// <summary>
/// Gibt die Dateigröße zurück
/// </summary>
/// <param name="__path">Pfad der Datei</param>
/// <returns>Dateigröße</returns>
public static long _FileSize(this String __path)
{
if(File.Exists(__path))
return new FileInfo(__path).Length;
else
throw new FileNotFoundException("Datei existiert nicht.");
}
/// <summary>
/// Gibt die Ordnergröße zurück
/// </summary>
/// <param name="__path">Pfad zum Ordner</param>
/// <returns>Ordnergröße</returns>
public static long _FolderSize(this String __path)
{
return __path._FolderSize(false);
}
/// <summary>
/// Gibt die Ordnergröße zurück
/// </summary>
/// <param name="__path">Pfad zum Ordner</param>
/// <param name="__recursiv">Unterordner auch dazu zählen</param>
/// <returns>Ordnergröße</returns>
public static long _FolderSize(this String __path, bool __recursiv)
{
if (Directory.Exists(__path))
{
if (__recursiv)
return FolderSize(new DirectoryInfo(__path));
else
{
long retValue = 0;
foreach (FileInfo fi in new DirectoryInfo(__path).GetFiles())
retValue += fi.Length;
return retValue;
}
}
else
throw new DirectoryNotFoundException("Ordner existiert nicht.");
}
/// <summary>
/// Erzeigt aus einem Pfad ein FileInfo
/// </summary>
/// <param name="__path">Pfad</param>
/// <returns>FileInfo</returns>
public static FileInfo _ConvertToFileInfo(this String __path)
{
if (File.Exists(__path))
return new FileInfo(__path);
else
throw new FileNotFoundException("Datei existiert nicht.");
}
/// <summary>
/// Erzeugt aus einem Pfad ein DirectoryInfo
/// </summary>
/// <param name="__path">Pfad</param>
/// <returns>DirectoryInfo</returns>
public static DirectoryInfo _ConvertToDirectoryInfo(this String __path)
{
if (Directory.Exists(__path))
return new DirectoryInfo(__path);
else
throw new DirectoryNotFoundException("Ordner existiert nicht.");
}
/// <summary>
/// Ermittelt ob der Pfad zu eine Datei oder zu einem Ordner zeigt
/// </summary>
/// <param name="__path">Pfad</param>
/// <returns>Datei/Ordner/Datei existiert nicht</returns>
public static IOType _Type(this String __path)
{
if (File.Exists(__path))
return IOType.File;
else if (Directory.Exists(__path))
return IOType.Directory;
return IOType.DontExist;
}
/// <summary>
/// Letzter Schreibzugriff auf den Pfad
/// </summary>
/// <param name="__path">Pfad</param>
/// <returns>Zeit</returns>
public static DateTime _LastWriteTime(this String __path)
{
if (File.Exists(__path))
return new FileInfo(__path).LastWriteTime;
else if (Directory.Exists(__path))
return new DirectoryInfo(__path).LastWriteTime;
else
throw new IOException("Kein Ziel zu diesem Pfad Vorhanden");
}
/// <summary>
/// Letzter Lesezugriff auf den Pfad
/// </summary>
/// <param name="__path">Pfad</param>
/// <returns>Zeit</returns>
public static DateTime _LastAccessTime(this String __path)
{
if (File.Exists(__path))
return new FileInfo(__path).LastAccessTime;
else if (Directory.Exists(__path))
return new DirectoryInfo(__path).LastAccessTime;
else
throw new IOException("Kein Ziel zu diesem Pfad Vorhanden");
}
/// <summary>
/// Zeit an dem die Datei/der Ordner erstellt wurde
/// </summary>
/// <param name="__path">Pfad</param>
/// <returns>Zeit</returns>
public static DateTime _CreationTime(this String __path)
{
if (File.Exists(__path))
return new FileInfo(__path).CreationTime;
else if (Directory.Exists(__path))
return new DirectoryInfo(__path).CreationTime;
else
throw new IOException("Kein Ziel zu diesem Pfad Vorhanden");
}
/// <summary>
/// Gibt den Übergeordneten Ordner an
/// </summary>
/// <param name="__path">Pfad</param>
/// <returns>Übergeordneter Ordner</returns>
public static string _Directory(this String __path)
{
if (File.Exists(__path))
return new FileInfo(__path).DirectoryName;
else if (Directory.Exists(__path))
return new DirectoryInfo(__path).Parent.Name;
else
throw new IOException("Kein Ziel zu diesem Pfad Vorhanden");
}
/// <summary>
/// Liste mit untergeordneten Dateien
/// </summary>
/// <param name="__pfad">Pfad des Ordners</param>
/// <returns>Liste</returns>
public static List<string> _ListFiles(this String __path)
{
List<string> retValue = new List<string>();
if (!Directory.Exists(__path))
throw new DirectoryNotFoundException("Ordner existiert nicht.");
foreach (FileInfo fi in new DirectoryInfo(__path).GetFiles())
retValue.Add(fi.FullName);
return retValue;
}
/// <summary>
/// Liste mit untergeordneten Ordner
/// </summary>
/// <param name="__pfad">Pfad des Ordners</param>
/// <returns>Liste</returns>
public static List<string> _ListDirectories(this String __path)
{
List<string> retValue = new List<string>();
if (!Directory.Exists(__path))
throw new DirectoryNotFoundException("Ordner existiert nicht.");
foreach (DirectoryInfo di in new DirectoryInfo(__path).GetDirectories())
retValue.Add(di.FullName);
return retValue;
}
#region Hilfmethoden
/// <summary>
/// Ermittelt die Ordnergröße samt Unterordner
/// </summary>
/// <param name="__di">Ordner</param>
/// <returns>Größe</returns>
private static long FolderSize(DirectoryInfo __di)
{
long retValue = 0;
foreach (DirectoryInfo di in __di.GetDirectories())
retValue += FolderSize(di);
foreach (FileInfo fi in __di.GetFiles())
retValue += fi.Length;
return retValue;
}
#endregion
}
}
Abgelegt unter
IO,
Extension,
Erweiterungsmethoden,
Datei,
Ordner,
Verzeichnis,
Verzeichnisse,
C#,
3.0,
Pfad,
FileInfo,
DirectoryInfo.
1 Kommentare zum Snippet