Dziwne zapisywanie uszkodzeń z Textpad 5 w Windows 7-64 VirtualBox VM do folderu współdzielonego z hostem Mac

0

Mam całkiem nową 64-bitową instalację Windows-7 uruchomioną w Virtual Box na MacBooku Pro. Korzystam z TextPad 5 w tym środowisku do edycji plików źródłowych, które znajdują się w folderze współdzielonym na hoście Mac. Kiedy zapisuję niektóre z tych plików źródłowych, zapisany plik kończy się z pewną ilością końca pliku powtórzoną co najmniej raz. Na przykład plik, który ma to na końcu:

    ...
    return ttp;
    };

po zapisaniu otworzyłby się za pomocą:

   ...
   return ttp;
   };

};

Jest to zdecydowanie problem z tym, jak plik jest zapisywany, a nie jak jest czytany, ponieważ widzę, że ma to znaczenie, z jakiej aplikacji korzystam do otwierania pliku (NotePad i Word w Windows 7, TextWrangler z powrotem na Macu).

Próbowałem zapisywać jako ANSI i UTF-8, z lub bez zaznaczenia opcji „Napisz Unicode i UTF-8 BOM” w preferencjach TextPad. Nie dzieje się tak ze wszystkimi plikami, chociaż nie widzę żadnego wzorca dotyczącego tego, które pliki mają lub nie mają problemu. Nie dzieje się tak w przypadku plików zapisanych na dysku Windows 7 c: \. I jak dotąd nie dzieje się tak w przypadku innych aplikacji zapisujących pliki, tylko TextPad.

Jakieś pomysły?

Moje wersje:

  • Textpad 5.4.2
  • Windows 7 Professional 64-bitowy, w pełni aktualny
  • VirtualBox 4.0.8 r71778
  • OSX 10.6.7
Jarsars
źródło
Dla jasności, folder współdzielony na hoście znajduje się na sformatowanej partycji HFS +?
Goyuix,
@Goyuix - tak, folder udostępniony jest na moim partycji OSX i wierzę, że HFS + byłby format domyślny, że choć nie jestem pewien, jak sprawdzić ...
jlarson
Przeszedłem na Notepad ++, który uważam za znacznie gorszy, jednak nie ma tego problemu z korupcją. Na szczęście większość moich prac programistycznych zakończyła się w świecie OSX, więc wystarczy Notepad ++.
jlarson,

Odpowiedzi:

0

To naprawdę brzmi jak błąd w TextPadzie - nie mogę wymyślić niczego, co zrobiłby VirtualBox, który spowodowałby, że działałby w ten sposób. Sposób działania folderów współdzielonych polega zasadniczo na mapowaniu fałszywego dysku sieciowego do gościa z systemem Windows 7. Jeśli to VirtualBox wprowadza dziwne zachowanie, powinieneś zobaczyć, jak przejawia się we wszystkich innych aplikacjach.

Widziałem już wiele programów, które źle zapisywały się podczas zapisywania plików, przede wszystkim dlatego, że po prostu nadpisują zawartość istniejącego pliku bez faktycznego resetowania długości pliku lub zerowania bajtów na końcu. Oznacza to, że jeśli „skrócisz” swój plik, usuwając kilka znaków lub wierszy, uzyskasz dokładne zachowanie opisane powyżej. Z pewnością możesz wykonać kilka testów, aby naprawdę ustalić źródło problemu i użyć tego, aby zachęcić autorów do naprawienia błędów:

  • Czy można zreplikować zachowanie przy użyciu opcji Zapisz jako zamiast po prostu Zapisz?
  • Czy możesz powtórzyć zachowanie, skracając plik? dłużej?
  • Czy możesz zreplikować zachowanie na innych dyskach sieciowych? czy tylko funkcje folderów współdzielonych?
  • Czy inne „filtry” mogą wpływać na operację zapisu, np. Antywirus, kroki po kompilacji, kontrola źródła itp.

Jako demonstrację przy użyciu programu PowerShell - oto jak możesz replikować to samo zachowanie, które widzisz. Zacząłem od napisania akapitu A Tale of Two Cities i zapisania go jako tale.txt

$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()

Widać, że wszystkie 15 wystąpień słów „the” zostało zastąpionych pustym ciągiem, zgodnie z zamierzeniami, z niezamierzoną konsekwencją ostatnich 45 bajtów oryginalnego pliku, powtarzając w ten sposób wyrażenie „tylko w najwyższym stopniu porównania. „dwa razy na końcu pliku - podobnie do opisanej powyżej sytuacji.

Dla kompletności, prostym rozwiązaniem powyższego przykładu złego kodu jest nieużywanie metody OpenWrite i zamiast tego wywoływanie statycznej metody WriteAllText na klasie File.

Goyuix
źródło
Świetna sprawa. 1) Save-As nie odtwarza problemu 2) jest krótszy lub dłuższy lub w ogóle nie ma zmian - wszystko to sprawia, że ​​problem się pojawia. Ilość replikowanego tekstu i liczba powtórzeń zmienia się w zależności od. Nie widzę wzorca, ale jest jeden ... 3) Nie, nie można zreplikować na dysku sieciowym lub (wirtualnym) dysku C: \. 4) Nie są zaangażowane żadne inne filtry, jest to zupełnie nowy system i jestem tego pewien. Odnośnie # 1 - Po ponownym otwarciu pliku utworzonego przez Save-As i ponownym zapisaniu go (do folderu współdzielonego) nie ma problemu, pomimo identycznej zawartości
jlarson
... a jeśli chodzi o # 1, jeszcze bardziej dzikie jest to, że jeśli wezmę plik Save-As, który nie odtwarza problemu, i zapiszę go nad nazwą, która ma problem, wtedy problem powróci. Innymi słowy, wyobraź sobie, że A) otwórz „1.txt” B) zapisz go C) otwórz go i zobacz problem D) popraw problem i zapisz jako „1b.txt” E) ponownie otwórz „1b.txt”, nie ma problemu F ) zapisz „1b.txt” G) ponownie, ponownie otwórz „1b.txt” i nie widzę problemu H) zapisz jako „1b.txt” na „1.txt”. I) otwórz „1.txt” J) problem istnieje !! .... czuje się jak złe sektory czy coś takiego, czy jest coś takiego z wspólnym napędem?
jlarson