GnuSmalltalkUsersGuide:BaseChapter 076

From 흡혈양파의 번역工房
Jump to: navigation, search
FileStream

FileStream

네임스페이스 Smalltalk에 정의됨

슈퍼클래스: FileDescriptor

범주: 스트림-파일


전형적(conventional) 프로그래머들은 나를 파일로 생각한다. 나의 인스턴스 생성 메서드는 디스크 파일명을 수락한다 (또는 UNIX에서의 /dev/rmt0 혹은 VMS에서의 MTA0: 와 같이 명명된 파일 객체로 생각한다).


FileStream class: file-in

fileIn: aFileName

aFileName 파일을 file in하라. File in 조작 중에는 아직 선언되지 않은 전역 변수는 (대문자로 시작) '알려지지 않은 변수' 오류를 발생시키지 않는다. 대신 'Undeclared' dictionary(스몰토크에 상주하는 전역 변수)에서 nil로 정의된다. 변수를 네임스페이스로 추가하는 즉시(예: 클래스를 생성함으로써) Association이 Undeclared로부터 제거되고 네임스페이스 재사용되어 오래된 참조가 자동으로 새 값을 가리킬 것이다.

fileIn: aFileName ifMissing: aSymbol

'aSymbol'에 의해 식별된 키(주로 클래스)가 스몰토크 시스템 dictionary에 이미 존재하지 않는 경우에만 조건부로 file in을 실행하라. File in 조작 중에는 아직 선언되지 않은 전역 변수는 (대문자로 시작) '알려지지 않은 변수' 오류를 발생시키지 않는다. 대신 'Undeclared' dictionary(스몰토크에 상주하는 전역 변수)에서 nil로 정의된다. 변수를 네임스페이스로 추가하는 즉시(예: 클래스를 생성함으로써) Association이 Undeclared로부터 제거되고 네임스페이스 재사용되어 오래된 참조가 자동으로 새 값을 가리킬 것이다.

fileIn: aFileName ifTrue: aBoolean

제공된 boolean이 true일 경우에만 조건부로 file in을 실행하라. File in 조작 중에는 아직 선언되지 않은 전역 변수는 (대문자로 시작) '알려지지 않은 변수' 오류를 발생시키지 않는다. 대신 'Undeclared' dictionary(스몰토크에 상주하는 전역 변수)에서 nil로 정의된다. 변수를 네임스페이스로 추가하는 즉시(예: 클래스를 생성함으로써) Association이 Undeclared로부터 제거되고 네임스페이스 재사용되어 오래된 참조가 자동으로 새 값을 가리킬 것이다.

fileIn: aFileName line: lineInteger from: realFileName at: aCharPos

주어진 행, 파일명, 시작 위치(1 대신)로부터 로딩된 것처럼 오류를 제공하는 aFileName 파일을 file in하라.

generateMakefileOnto: aStream

레코드가 마지막으로 true로 설정되었던 file-ins에 대한 make 파일을 생성하고 aStream 상에 보관하라.

initialize

Private - 수신자의 클래스 변수를 초기화하라.

record: recordFlag

스몰토크가 중첩 file-ins에 관한 정보를 기록해야 하는지 여부를 설정하라. 기록이 활성화되면 file-ins의 개입에 유효한 makefile을 자동으로 생성하도록 #generateMakefileOnto: 를 사용하라.

require: assoc

assoc의 키가 스몰토크 시스템 dictionary에 이미 존재하지 않는 경우에만 조건부로 assoc의 값으로부터 file in을 실행하라. File in 조작 중에는 아직 선언되지 않은 전역 변수는 (대문자로 시작) '알려지지 않은 변수' 오류를 발생시키지 않는다. 대신 'Undeclared' dictionary(스몰토크에 상주하는 전역 변수)에 nil로 정의된다. 변수를 네임스페이스로 추가하는 즉시(예: 클래스를 생성함으로써) Association이 Undeclared로부터 제거되고 네임스페이스 재사용되어 오래된 참조가 자동으로 새 값을 가리킬 것이다.

verbose: verboseFlag

스몰토크가 file in을 실행 시 디버깅 메시지를 출력해야 하는지를 응답하라.


FileStream 클래스: 표준 스트림

stderr

프로그램이 발행한 오류 메시지와 진단에 사용 가능한 스몰토크 프로그램의 표준 오류 파일 처리에 부착된 FileStream을 응답하라.

stdin

스몰토크 프로그램의 표준 입력 파일 처리에 부착된 FileStream을 응답하는데, 이는 프로그램에 대한 일반 입력 소스이다.

stdout

스몰토크 프로그램의 표준 출력 파일 처리에 부착된 FileStream을 응답하라; 주로 프로그램의 일반 출력에 사용된다.


FileStream: 기본

bufferStart

Private - read 버퍼의 시작에 해당하는 파일의 시작부터 오프셋을 응답하라.

copyFrom: from to: to

두 개의 주어진 위치 사이의 파일 내용을 응답하라.

next

파일에서 다음(next) 바이트를 리턴하고, eof의 경우 nil을 리턴하라.

nextPut: aCharacter

파일 상에 aCharacter 를 보관하라.

peek

파일에서 다음(next) 바이트를 리턴하고, eof의 경우 nil을 리턴하라. 파일 포인터를 앞서진(advance) 말라.

position

파일의 시작에서부터 0에서 시작하는(zero-based) 위치를 응답하라.

position: n

파일 포인터를 0에서 시작하는(zero-based) 위치 n으로 설정하라.

size

현재 파일 크기를 바이트로 리턴하라.

truncate

현재 위치에서 파일을 절단하라.


FileStream: 버퍼링

bufferSize

파일의 현재 버퍼를 응답하라.

bufferSize: bufSize

파일을 비우고(flush) 버퍼의 크기를 bufSize로 설정하라.

clean

파일 기술자의 상태를 객체의 상태와 동기화하라.

fill

Private - 입력 버퍼를 채워라.

flush

출력 버퍼를 비워라.

newBuffer

Private - 수신자의 버퍼로서 사용될 String을 응답하라.

next: n bufferAll: aCollection startingAt: pos

Private - 버퍼에 n개 문자를 위한 공간이 있다고 가정하고 버퍼 내에 pos번째부터 시작해 aCollection의 n개 문자를 보관한다.

nextAvailable: anInteger into: aCollection startingAt: pos

스트림으로부터 anInteger 바이트까지 읽고 aCollection에 보관하라. 읽힌 바이트 수를 리턴하라.

nextAvailable: anInteger putAllOn: aStream

스트림으로부터 anInteger 바이터를 aStream에 복사하라. 읽힌 바이트 수를 리턴하라.

pendingWrite

출력 버퍼가 가득 찼는지(full) 응답하라.


FileStream: 컴파일하기

segmentFrom: startPos to: endPos

객체에게 #asString을 전송하면 수신자에게 'copyFrom: startPos to: endPos'를 전송한 것과 같은 결과를 생성하게 될 객체를 응답하라.


FileStream: 초기화-release

initialize

수신자의 인스턴스 변수를 초기화하라.


FileStream: 상속된 메서드 오버라이드하기

next: n putAll: aCollection startingAt: pos

첫 번째는 pos 위치부터 시작해 aCollection으로부터 n개 값을 적어라.

nextLine

다음 행부터 다음 새행 문자까지 포함하여 스트림이 접근하는 것과 같은 타입의 컬렉션을 응답하라. 새행 문자를 찾을 수 없는 경우 스트림의 나머지 내용을 모두 리턴하라.

nextPutAllOn: aStream

수신자의 모든 문자를 aStream에 넣어라.

upTo: aCharacter

aCharacter까지 데이터를 포함하여 스트림이 접근하는 것과 같은 타입의 컬렉션을 응답하라. 그러한 문자를 찾을 수 없는 경우 스트림의 나머지 내용을 모두 리턴하라.


FileStream: 검사하기

atEnd

데이터의 끝까지 왔는지 응답하라.


Notes