PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Visual Basic 2010 Datei umbenennen und ersetzen.


Geldmann3
2012-10-17, 19:13:30
Im Moment mache ich es so
My.Computer.FileSystem.RenameFile("AlterDateiname", "NeuerDateiname")

Doch wenn eine Datei namens NeuerDateiname schon existiert, verabschiedet sich meine Anwendung mit einem Fehlercode. Ich es hätte lieber, dass die alte Datei einfach ungefragt durch die Neue ersetzt wird.

Nun könnte ich auch vorher fragen, ob NeuerDateiname schon existiert und diesen falls ja, zuerst löschen. Geht das auch einfacher?

Am geilsten wäre es so.
My.Computer.FileSystem.RenameFile("AlterDateiname", "NeuerDateiname", Overwrite) geht aber leider nicht, das macht mich zu einem traurigen Pandabären.

Falls der MS Support das also vielleicht auch liest, wie wäre es mit dieser Funktion (;

Klar, ich kann vielleicht nicht erwarten, dass sowas aus der Dose funktioniert. Doch das ist ja der Grund, warum ich mir schnell was mit Visual Basic programmiere und nicht gleich C++ auspacke.

Monger
2012-10-17, 20:04:10
De facto ist jedes Umbenennen ein "Move".

Wenn man nicht gerade die VB.NET Extensions benutzt (ergo z.B. C#), gibts nur das IO.File.Move.

Move hat die Eigenart, dass es eigentlich nur innerhalb der selben Partition geht. Also: innerhalb von C:\ von einem Ordner in einen anderen verschieben ist überhaupt kein Ding, von C:\ nach D:\ irgendwas verschieben ist eigentlich ein kopieren und anschließendes löschen. Das ist deshalb relevant, weil im ersten Fall die NTFS Rechte unverändert bleiben, und im zweiten vom Überordner geerbt werden.

Was ich damit sagen will, ist:
Abgesehen davon dass solche Trivialimplementierungen eh nicht so recht ins Bild des .NET Frameworks passen - so ein implizites Löschen und Ersetzen könnte ganz ungewohnte Nebenwirkungen haben. Zugriffe aufs Dateisystem sind eh immer fehlerbehaftet, Move ist keine ganz intuitive Funktion, und zwecks Lesbarkeit ist etwas mehr Feingranularität nicht verkehrt.
Ist ja nicht so dass man hier tausende von Zeilen sparen würde! ;)

Gast
2012-10-18, 20:48:19
IO.File
IO.FileInfo

http://msdn.microsoft.com/en-us/library/zfk1t850.aspx
http://openbook.galileocomputing.de/visualbasic_2008/vb2008_07_eingabe_und_ausgabe_003.htm#mjd7036f737cd2d562b8ec6d1f41eac9c5
http://msdn.microsoft.com/de-de/library/vstudio/2kzb96fk%28v=vs.100%29.aspx