QUICK REFERENCE: CLASSE FILE STREAM

No momento em que redigimos essa lição, ainda não está definido qual o banco de dados que será nativo no micro OLPC. Fala-se no SQLite.

Nós vamos apresentar aqui um sistema de arquivamento muito simples mas que funciona. Aliás ser simples e funcional é um dos paradigmas de tudo que se refere ao OLPC.

Lembramos que o micro OLPC não tem disco rígido. Tem uma memória Flash com 512 Mb (sendo que pouco mais que 100 Mb é ocupado pelo sistema operacional). A memória é de 128 Mb. Isso dá uma idéia do tamanho de arquivo razoável, uma vez que ele vai inteiro para a memória.

Vamos trabalhar com arquivos texto (.TXT). E, na realidade, todo o arquivo vai ser só uma enorme linha. A divisão entre registros fica por conta do separador "dois-pontos" e a divisão entre campos pelo separador "jogo-da-velha"(#). Isso é uma convenção nossa, não do Squeak.

Vimos nas duas lições anteriores, como desconstruir strings que tenham separadores. Veremos aqui novos exemplos.

Para criar um objeto da Classe FileStream, ligamo-o a um arquivo .TXT - a ser criado ou existente. Vejamos dois casos:

            
            fS1 := FileStream forceNewFileNamed:'meuarquivo.txt'.
            fS2 := FileStream fileNamed:'meuarquivo.txt'.

Como na lição anterior, temos alguns mini-exercícios para mostrar os métodos:


setToEnd

Posiciona "cursor" depois do último caractere do arquivo (que é um longo string).

reset

Reposiciona o "cursor" no início do arquivo.

nextPutAll: x

Grava x (normalmente um String) no arquivo.

contentsOfEntireFile

Retorna todo o conteúdo do arquivo.

atEnd

Retorna true se o "cursor" está depois do fim do arquivo, ou false se não está.

close

Fecha o arquivo.

Exemplo

| oC  stream|
stream := FileStream forceNewFileNamed: 'meuarquivo.txt'.
stream setToEnd.
oC:= OrderedCollection new.
oC add: '001#John#6576'.
oC add: '002#Mary#8876'.
oC add: '003#Carl#4231'.
 
1 to: oC size do: [
:i | i+1.  
stream nextPutAll:  ( (oC at: i),':') . ].
stream close.

O arquivo será gravado na pasta MyEtoys - mesma onde são gravados os projetos.

Podemos ver o arquivo usando a janela "World" e abrindo um "file list".

Exemplo

|file bigString ordCol|
file := FileStream fileNamed: 'meuarquivo.txt'. 
bigString := file contentsOfEntireFile.
ordCol:= bigString findBetweenSubStrs: ':'.  
Transcript show:  (ordCol at: 2).
file close.
 

Resultado

002#Mary#8876




              LIÇÃO ANTERIOR       PRÓXIMA LIÇÃO             
ÍNDICE HOMEPAGE