<f{"id":255,"date":"2013-07-04T22:14:19","date_gmt":"2013-07-04T21:14:19","guid":{"rendered":"http:\/\/www.bernhard-krenz.de\/?p=255"},"modified":"2014-11-20T00:18:02","modified_gmt":"2014-11-19T23:18:02","slug":"file-move-nach-file-delete","status":"publish","type":"post","link":"https:\/\/www.bernhard-krenz.de\/?p=255","title":{"rendered":"File.Move nach File.Delete"},"content":{"rendered":"<p>Die Windows-Welt h\u00e4lt doch immer wieder \u00dcberraschungen bereit. Gerade brachten mich folgende Code-Zeilen zur Verzweiflung:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nif (File.Exists(filePath + &quot;.backup&quot;))\r\n{\r\n\tFile.Delete(filePath + &quot;.backup&quot;);\r\n}\r\n\r\nif (File.Exists(filePath))\r\n{\r\n\tFile.Move(filePath, filePath + &quot;.backup&quot;);\r\n}\r\n<\/pre>\n<p>Ziel des Ganzen: Eine Datei sollte vor dem \u00dcberschreiben in eine backup-Datei gespeichert werden. Existierte diese backup-Datei bereits, wird sie vorher gel\u00f6scht.<\/p>\n<p>Der Code erzeugte eine IOException mit der Meldung, dass die Datei nicht bewegt werden konnte, da diese bereits existiert. Mit dem oberen Code nat\u00fcrlich v\u00f6llig unm\u00f6glich. Eine Recherche zeigte als Ursache, dass das File.Delete m\u00f6glicherweise zu lange dauert und zum Zeitpunkt des File.Move noch existierte. F\u00fcr mich ist dann fraglich, warum der Code nach File.Delete ausgef\u00fchrt wird. Dies sollt erst geschehen, wenn die Datei tats\u00e4chlich gel\u00f6scht wurde.<\/p>\n<p>Wie dem auch sei. Folgende \u00c4nderung vermeidet den Fehler:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nif (File.Exists(filePath))\r\n{\r\n\tFile.Copy(filePath, filePath + &quot;.backup&quot;, true);\r\n}\r\n<\/pre>\n<p>Hiermit wird die aktuelle Datei-Version zum Backup kopiert und \u00fcberschrieben, falls diese bereits vorhanden ist.<\/p>\n<p>Im n\u00e4chsten Schritt muss nat\u00fcrlich sicher gestellt werden, dass die aktuelle Datei-Version durch die Neue \u00fcberschrieben wird.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Windows-Welt h\u00e4lt doch immer wieder \u00dcberraschungen bereit. Gerade brachten mich folgende Code-Zeilen zur Verzweiflung: Ziel des Ganzen: Eine Datei<a href=\"https:\/\/www.bernhard-krenz.de\/?p=255\" class=\"searchmore\">Weiterlesen&hellip;<\/a><\/p>\n<div class=\"clr\"><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[7],"_links":{"self":[{"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=\/wp\/v2\/posts\/255"}],"collection":[{"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=255"}],"version-history":[{"count":3,"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=\/wp\/v2\/posts\/255\/revisions"}],"predecessor-version":[{"id":265,"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=\/wp\/v2\/posts\/255\/revisions\/265"}],"wp:attachment":[{"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}