Feedback

C# - Automatisches Umbenennen eines Pfades

Veröffentlicht von am 27.12.2007
(1 Bewertungen)
Mit diesem Snippet ist es möglich, einen Pfad, sei es eine Datei oder ein Verzeichnis, umzugestalten, so dass dieser nicht mehr existiert.
Wenn ein Pfad nicht existiert, wird er unverändert zurückgegeben, andernfalls wird eine Nummer angehängt.
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) für Entwickler - Kompakt

Nach Teilnahme an dieser Schulung kennen Sie alle wesentlichen Funktionen des TFS für Entwickler. Sie setzen Software-Entwicklung mit dem Visual Studio Team Foundation Server erfolgreich um.

ASP.NET Core und Angular Komplett für .NET-Entwickler

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

using System;
using System.IO;

namespace ViperBytes.IO
{
    public class AutoRenamer
    {
        /// <summary>
        /// Returns a new, not existing path.
        /// On the end of the file / directory name will be attached a number
        /// </summary>
        /// <param name="path">The existing path</param>
        /// <returns>An alternative path wich not exists</returns>
        public static string AutoRename(string path)
        {
            if ((!File.Exists(path)) && (!Directory.Exists(path)))
                // the path doesn't exist, so return without attached counter
                return path;
            else if (path == Path.GetPathRoot(path))
                // the path is only a drive letter, so we can't attach something
                return path;

            // the returned alternative path
            string alternative = path;

            // the attach counter
            int count = 0;

            // specifyes, wheather an ending slash of directory was cutten
            bool cutSlash = false;

            // cut ending slash
            if (alternative[alternative.Length - 1] == Path.DirectorySeparatorChar)
            {
                alternative = alternative.Substring(0, alternative.Length - 1);

                // remember, because we have to replace it later
                cutSlash = true;
            }

            while ((File.Exists(alternative)) || (Directory.Exists(alternative)))
            {
                count++;

                // the attachment from count
                string attach = " (" + count.ToString() + ")";

                // cut extension if file exists
                if (File.Exists(alternative))
                    alternative = path.Substring(0, path.Length - Path.GetExtension(path).Length) + attach + Path.GetExtension(path);
                else
                    alternative = path + attach;
            }

            // if a slash was cutten, add it at the end
            if (cutSlash)
                alternative += Path.DirectorySeparatorChar;

            return alternative;
        }
    }
}
Abgelegt unter Datei, Verzeichnis, Ordner, Pfad, umbenennen, .

1 Kommentare zum Snippet

bigdeak schrieb am 26.05.2010:
Sauber kommentiert, sehr verständlich geschrieben und sehr gut zu gebrauchen, super Snippet, 10 Punkte! :)

Von meiner Seite nur ein winziger Verbesserungsvorschlag:

//if (File.Exists(alternative))
alternative = path.Substring(0, path.Length - Path.GetExtension(path).Length) + attach + Path.GetExtension(path);
// else
// alternative = path + attach;

Du kannst dir eigentlich die Dateiabfrage sparen und direkt die Extension mit rein nehmen, weil diese sowieso string.Empty ist, wenn es sich um einen Ordner handelt.
 

Logge dich ein, um hier zu kommentieren!