openlang

Запись текстового файла в Smalltalk

Пробую выполнить следующий фрагмент:

entry := 'notes.txt' asFileReference.
writer := entry writeStream.
writer nextPutAll: 'hello world'.
writer close.
entry content.

Но возникает такое исключение:

**FileDoesNotExistException**
Переведено с английскогоПоказать оригинал

Разговор продолжается 2

Следуя доводам
  1. Ссылка на ответ
    'notes.txt' asFileReference
      writeStreamDo: [ :sink | sink << 'Hello, World!' ].

    Это должно сработать. Впрочем, это лишь другая запись вашего предыдущего подхода, поэтому я подозреваю неверные права на запись или какую-то связанную проблему в окружении.

    Переведено с английскогоПоказать оригинал
  2. Ссылка на ответ

    Дополню ответ Elain: неожиданная особенность Pharo в том, что writeStreamDo пишет поверх существующего файла, поэтому, когда старый файл длиннее новых данных, после нового содержимого остаётся хвост старого. К счастью, исправление простое: достаточно добавить в блок truncate. Вот несколько более «безопасный» вариант:

    'notes.txt' asFileReference
      writeStreamDo: [ :sink | sink truncate. sink << 'Hello, World!' ].
    Переведено с английскогоПоказать оригинал

Другие стороны того же вопроса

  1. Использование MATLAB через Google Colab

    Можно ли использовать команды MATLAB из Google Colab (облачного Jupyter)? Например, хотелось бы вызывать из Google Colab функ…

    Ответы 2Последняя активность matlab
  2. Может ли gdb поставить точку останова на инструкцию ассемблера по адресу?

    Моя попытка: но, похоже, такой команды не существует. Может ли gdb сделать что-то подобное?

    Ответы 2Последняя активность assembly
  3. Может ли проверка Playwright допускать один из двух текстов?

    Хочу проверить, содержит ли текст one либо two: Можно ли заставить это работать в Playwright? И можно ли сделать то же самое…

    Ответы 2Последняя активность typescript