Странное сохранение коррупции из Textpad 5 в Windows 7-64 VirtualBox VM в общую папку с хостом Mac

791
jlarson

У меня довольно новая 64-битная установка Window-7, запущенная в Virtual Box на MacBook Pro. Я использую TextPad 5 в этой среде для редактирования исходных файлов, которые находятся в общей папке на Mac-хосте. Когда я сохраняю некоторые из этих исходных файлов, сохраненный файл заканчивается тем, что некоторое количество конца файла повторяется один или несколько раз. Например, файл, который имеет это в конце:

 ... return ttp; }; 

после сохранения откроется:

 ... return ttp; };  }; 

Это определенно проблема с тем, как файл записывается, а не с тем, как он читается, потому что теперь я могу видеть, каким приложением я открываю файл (NotePad & Word в Windows 7, TextWrangler в Mac).

Я пытался сохранить как ANSI и UTF-8, так и с или без 'Write Unicode и UTF-8 BOM', отмеченных в настройках TextPad. Это происходит не со всеми файлами, хотя я не вижу шаблонов, в которых есть или нет проблемы с файлами. Это не происходит с файлами, записанными на диск Windows 7 c: \. И до сих пор это не происходит из других приложений, сохраняющих файлы, только TextPad.

Есть идеи?

Мои версии:

  • Textpad 5.4.2
  • 64-разрядная версия Windows 7 Professional, полностью обновленная
  • VirtualBox 4.0.8 r71778
  • OSX 10.6.7
0
Просто чтобы быть понятным, общая папка на хосте находится в разделе, отформатированном в HFS +? Goyuix 13 лет назад 0
@Goyuix - да, общая папка находится в моем разделе OSX, и я считаю, что HFS + будет форматом по умолчанию, хотя я не уверен, как это проверить ... jlarson 13 лет назад 0
Я перешел на Notepad ++, который, на мой взгляд, серьезно уступает, но у него нет этой проблемы с повреждением. К счастью, большая часть моей работы с разработчиками закончилась в мире OSX, поэтому Notepad ++ будет достаточно. jlarson 13 лет назад 0

1 ответ на вопрос

0
Goyuix

Это действительно звучит как ошибка в TextPad - я не могу думать ни о чем, что VirtualBox мог бы сделать так, что бы он так себя вел. Принцип работы общих папок заключается в том, что он в основном сопоставляет фальшивый сетевой диск с гостем Windows 7. Если это был VirtualBox, представляющий странное поведение, вы должны увидеть его во всех других приложениях.

Я видел, как многие программы плохо себя вели при сохранении файлов, прежде всего в том, что они просто перезаписывают содержимое существующего файла, не сбрасывая длину файла или обнуляя байты в конце. Это означает, что если вы «укоротите» свой файл, удалив несколько символов или строк, вы получите точное поведение, описанное выше. Конечно, вы могли бы выполнить несколько тестов, чтобы действительно определить источник проблемы, и использовать его, чтобы заставить авторов исправлять ошибки:

  • Можете ли вы повторить поведение, используя «Сохранить как» вместо «Сохранить»?
  • Можете ли вы повторить поведение, сделав файл короче? больше?
  • Можете ли вы повторить поведение на других сетевых дисках? или только функции общих папок?
  • Могут ли какие-либо другие «фильтры» влиять на операцию сохранения, например, антивирус, шаги после сборки, контроль исходного кода и т. Д.

В качестве демонстрации, используя PowerShell - вот как вы можете повторить то же поведение, которое вы видите. Я начал с того, что взял первый абзац « Повести о двух городах» и сохранил его как 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() 

Вы можете видеть, что все 15 экземпляров слов «the» были заменены пустой строкой, как и предполагалось, с непреднамеренным последствием оставшихся 45 последних байтов исходного файла, что повторяет фразу «только в превосходной степени сравнения». "дважды в конце файла - похоже на ситуацию, которую вы описали выше.

Для полноты простое решение приведенного выше примера плохого кода состоит в том, чтобы не использовать метод OpenWrite, а вместо этого вызвать статический метод WriteAllText для класса File.

Great stuff. 1) Save-As does not reproduce the problem 2) shorter or longer, or no change at all - these all make the problem happen. The amount of text replicated and how many times it's replicated changes depending though. I can't spot the pattern but there is one... 3) No, can't replicated on a network drive or on the (virtual) C:\ drive. 4) No other filters are involved, this is a brand new system and I'm confident of that. Regarding #1 - After re-opening the file that I created via Save-As, and Save-ing it again (to shared folder), it doesn't have a problem, despite identical content jlarson 13 лет назад 0
...and regarding #1, even more wild is that if I take the Save-As file which is *not* reproducing the problem, and save it over the name which is having a problem, then the problem is back. In other words, imagine A) open "1.txt" B) save it C) reopen it and see problem D) correct problem and save-as to "1b.txt" E) reopen "1b.txt", no problem F) save "1b.txt" G) again, reopen "1b.txt" and see no problem H) save-as "1b.txt" to "1.txt". I) open "1.txt" J) the problem is there!! .... feels like bad sectors or something, is there such a thing w/ a shared drive? jlarson 13 лет назад 0