Das klingt wirklich nach einem Fehler in TextPad - ich kann mir nichts vorstellen, was VirtualBox tun würde, was dazu führen würde, dass es sich so verhält. Die Funktion von Shared Folders ordnet Ihrem Windows 7-Gast grundsätzlich ein falsches Netzlaufwerk zu. Wenn VirtualBox das seltsame Verhalten eingeführt hat, sollten Sie es in allen anderen Apps sehen.
Ich habe gesehen, dass sich eine Reihe von Programmen beim Speichern von Dateien schlecht verhalten hat, vor allem, weil sie den Inhalt der vorhandenen Datei überschreiben, ohne die Dateilänge zurückzusetzen oder die Bytes am Ende auf Null zu setzen. Dies bedeutet, dass Sie, wenn Sie Ihre Datei "verkürzen", indem Sie einige Zeichen oder Zeilen entfernen, genau das oben beschriebene Verhalten erhalten. Sie könnten sicherlich ein paar Tests durchführen, um die Ursache des Problems genau zu bestimmen, und die Autoren dazu verwenden, die Fehler zu beheben:
- Können Sie das Verhalten mithilfe von "Speichern unter" statt nur "Speichern" replizieren?
- Können Sie das Verhalten replizieren, indem Sie die Datei kürzer machen? länger?
- Können Sie das Verhalten auf anderen Netzlaufwerken replizieren? oder einfach nur freigegebene Ordner-Funktionen?
- Könnten andere "Filter" Auswirkungen auf den Speichervorgang haben, z. B. Virenschutz, Schritte nach dem Build, Quellcodeverwaltung usw.
Zur Demonstration mit PowerShell können Sie dasselbe Verhalten replizieren, das Sie sehen. Ich begann damit, den ersten Absatz von A Tale of Two Cities zu nehmen und als tale.txt zu speichern
$text = gc tale.txt $fs = [System.IO.File]::OpenWrite("tale.txt") $sw = New-Object System.IO.StreamWriter($fs) $sw.Write($text.Replace("the","")) $sw.Dispose()
Sie sehen, dass alle 15 Instanzen der Wörter "the" wie beabsichtigt durch die leere Zeichenfolge ersetzt wurden, wobei die unbeabsichtigten Folgen der letzten 45 Bytes der ursprünglichen Datei übrig blieben und der Satz "nur im überdurchschnittlichen Vergleichsgrad " wiederholt wurde . "zweimal am Ende der Datei - ähnlich der oben beschriebenen Situation.
Der Vollständigkeit halber sollte für das obige Beispiel für den fehlerhaften Code die OpenWrite-Methode nicht verwendet werden, sondern die statische WriteAllText-Methode für die File-Klasse.