Lendo arquivos


Lendo arquivos como texto:

action! read

>> a: read %mySecondFile.txt
== {First line;^/Second line;^/Third line.^/Fourth line;^/Fifth li

Agora a palavra (variável) "a" tem todo o conteúdo do arquivo:

>> print a
First line;
Second line;
Third line.
Fourth line;
Fifth line;
Sixth line.

Lendo arquivos como séries onde cada linha é um elemento:

Note que a palavra (variável) a acima é, por enquanto, só texto com newlines. Se você quiser ler o arquivo como uma série, tendo cada linha como um elemento, você deve usar read/lines:

>> a: read/lines %mySecondFile.txt
== ["First line;" "Second line;" "Third line." "Fourth line;"...

>> print pick a 2
Second line;

Read refinements:    
    /part        => Leitura parcial de um dado número de elementos.
    /seek        => Lê a partir de uma posição específica (source relative).
    /binary      => Preserva o conteúdo (binário).
    /lines       => Converte para bloco de strings.
    /info        =>
    /as          => Lê com a codificação especificada, o default é 'UTF-8.


function! load

Lendo arquivos como séries, onde cada palavra (separada por espaço) é um elemento:

Neste caso, você deve usar load ao invés de read:

>> a: load %mySecondFile.txt
== [First line Second line Third line.
               Fourth line Fifth...

>> print pick a 2
line

Lendo e escrevendo arquivos binários:

Para ler ou escrever um arquivo binário como uma imagem ou um som, você deve usar o refinamento /binary . O código abaixo carrega uma imagem bitmap para uma palavra (variável) e salva essa imagem com outro nome:

>> a: read/binary %heart.bmp
== #{
424D660700000000000036000000280000001E00000014000000010...
>> write/binary %newheart.bmp a

Load refinements:    
    /header      => <em discussão>.
    /all         => Carrega todos os valores e retorna um bloco..
    /trap        => Carrebga todos os valores, retorna [[values] position error].
    /next        => Carrega apenas o próximo valor.
    /part        =>
    /into        => Põe o resultado em um bloco dado ao invés de criar um novo bloco.
    /as          => Especifica o tipo de dados. Use NONE para carregar como código.