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. Google Colab에서 MATLAB 사용하기

    Google Colab(클라우드의 Jupyter)에서 MATLAB 명령을 쓸 수 있나요? 예를 들어 Google Colab에서 bin(vbt, Name, Value), tbfi(vbt, Name, Value), tuff(vb…

    답글 2최근 활동 matlab
  2. gdb에서 주소로 어셈블리 명령에 중단점을 설정할 수 있나요?

    제가 시도한 명령: 그런데 이 명령은 없는 모양이에요. gdb에서 이런 걸 할 수 있나요?

    답글 2최근 활동 assembly
  3. Playwright 단언에서 두 텍스트 값 중 하나를 허용할 수 있나요?

    텍스트에 one 또는 two 중 하나가 들어 있는지 확인하고 싶어요: Playwright에서 이렇게 동작하게 할 수 있나요? 같은 걸 문장 안에도 넣을 수 있을까요, 예를 들면

    답글 2최근 활동 typescript