Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Dateien umbenennen

Geschrieben von: Christoph Wille
Kategorie: C#

Auf den ersten Blick denkt man sich, daß das so schwer nicht sein kann. Allerdings wenn man dann nicht wie erwartet eine File.Rename Methode findet, wird die Suche nach der Lösung für Nicht-Alte-Hasen der Windows Programmierung mehr oder weniger interessant.

Warum gibt es wirklich keine Rename Methode in der File Klasse? Der Grund findet sich in den File API's von Windows NT/2000, die ebenfalls keine Rename Methode anbieten - diese Funktionalität wird über die Move Funktionen zur Verfügung gestellt. Wieso?

Dazu sehen wir uns NTFS ein wenig näher an, denn Copy und Move Operationen verhalten sich nämlich voneinander verschieden. Beim Kopieren erben die Dateien die NTFS Rechte des Ordners, in den sie hineinkopiert werden. Ein Move hingegen behält die Dateirechte bei, solange die Operation auf ein und derselben Disk stattfindet (sonst wird die Move Operation zu einem Copy). Was hat das mit dem Umbenennen von Dateien zu tun? Nun, sowohl beim Umbenennen als auch bei Move bleibt alles beim alten bis auch den Ort der Datei - einmal ändert sich nur der Name, das andere Mal das Verzeichnis. Deswegen werden beide Operationen durch eine - nämlich Move - abgebildet.

Umbenennen mit File.Move

Um die Anwendung von File.Move zu demonstrieren, habe ich eine kleine Kommandozeilenapplikation geschrieben (natürlich funktioniert das auch in ASP.NET). Im Prinzip habe ich den Befehl rename nochmal selbst implementiert, und einige der möglicherweise auftretenden Fehlerfälle abgefangen:

using System;
using System.IO;
using System.Security;

class MainClass
{
  public static void Main(string[] args)
  {
    if (args.Length != 2)
    {
      Console.WriteLine("Usage: rename source destination");
      return;
    }
    
    string strExistingFile = args[0];
    string strNewFilename = args[1];
    bool bRenameSucceeded = false;
    
    try
    {
      File.Move(strExistingFile, strNewFilename);
      bRenameSucceeded = true;
    }
    catch(FileNotFoundException fe)
    {
      Console.WriteLine("Source file does not exist");
    }
    catch(IOException ioe)
    {
      Console.WriteLine("Destination not acceptable");
    }
    catch(SecurityException se)
    {
      Console.WriteLine("You do not have permission for this operation");
    }
    catch(Exception e)
    {
      Console.WriteLine("File rename failed, reason: " + e.ToString());
    }
    if (bRenameSucceeded)
    {
      Console.WriteLine("Rename completed successfully");
    }
  }
}

Wird die Applikation mit zuwenig Parametern aufgerufen (zwei sind nötig - der originale Dateiname und der neue), werden Informationen zur Verwendung ausgegeben. Danach geht es bereits an das Umbenennen, allerdings sollte man das tunlichst in einem try...catch Block machen, da beim Umbenennen einiges schief laufen kann (ich habe nur die wichtigsten Fehler behandelt).

Dateioperationen sollte man immer mit try...catch verwenden, da das mindeste das schiefgehen kann fehlende oder falsche Datei- und Verzeichnisrechte sind!

Schlußbemerkung

Zwar ist das Umbenennen von Dateien nicht auf den ersten Blick intuitiv, so ist es dennoch nicht schwierig sobald man weiß, wie man zum Ziel gelangt.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Dateien lesen in ASP.NET
Directory Browsing a la .NET
Ein Touch-Utility in C#
Exception Handling in C#
Online File Management System mit ASP.NET und C# - Teil 2
Web Projekte mit SharpDevelop erstellen

Links zu anderen Sites

SharpDevelop

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Eine weitere sehr hilfreiche Resource ist das deutsche ASP.NET Wiki, das als zentrale Anlaufstelle für Tips, Tricks, Know How und alles Nützliche was man in seinem Alltag als (ASP).NET-Entwickler so braucht und entdeckt gedacht ist.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.