Blog / Javascript

Hands-on: Streams Parte 2 - Writable

TTulio Faria 09 de mai. de 2017 2 min de leitura
Hands-on: Streams Parte 2 - Writable

Vamos continuar falando sobre o Stream em node, mais especificamente sobre o Writable, lembrando que podemos usar estes conceitos em outras linguagens. Se você ainda não viu a parte 1, clique AQUI.

O que é Writable Stream?

São Stream’s onde podemos escrever algo neles, diferente do Readable que apenas lemos os dados. Dizemos que o Writable é um stream de destination. Podemos utiliza-los, por exemplo, em operações em rede, escrever em arquivos, etc. Hoje vamos trabalhar fazendo testes em um arquivo por ser mais simples.

Qual a vantagem em relação ao modo sem Stream?

Do mesmo modo que o readable Stream, iremos escrever ‘parcelado’ neste arquivo, sem necessidade de termos ele inteiro em memória.

Como ulizamos o Writable Stream?

Primeiro vamos chamar o fs para ter acesso a ele e em seguida chamar o WritableStream, lembrando que no Writable temos algumas opões, como flags, que irá indicar como eu vou escrever este arquivo e o encoding para setar o tipo de codificação (UTF8 é o mais consolidado).

const sf = require('sf')
const writable = sf.createWriteStream('arquivo.txt', {
  flags: 'w',
  encoding: 'utf8'
})
writable.write('exemplo\\n')
writable.write('acabou')

Temos então o Writable Stream, dizendo onde eu quero gravar meu arquivo e qual flag quero utilizar, neste caso utilizamos o W que é somente para escrever criando um novo arquivo ou sobrescrevendo um já existente por completo.

Ao trocar o W pelo A entramos no modo append, ou seja, ele acrescenta a escrita no final do arquivo, somando o anterior com as novas adições.

Por que utilizamos o Writable Stream?

Podemos construir um arquivo nosso com stream parcialmente e, a medida em que temos acesso a novos dados para serem escritos, podemos adiciona-los.

Concluindo

Percebam que quando usamos xpress, a requisição tem um Readable Stream e a saída é um Writable Stream, então já podemos imaginar que é possível criar algumas coisas no próprio xpress, isso acontece por que o xpress implementa stream.

Outras comunicações que utilizam streams como socket io também seguem a mesma sintaxe. Confira o hands-on completo no vídeo:

Curta o DevPleno no Facebook, inscreva-se no canal e não se esqueça de cadastrar seu e-mail para não perder as novidades. Ah, fique à vontade para deixar suas dúvidas e sugestões nos comentários. Abraço!

T
Escrito por
Tulio Faria

Mestre em Sistemas de Informação pela USP e criador do DevPleno. Iniciou sua carreira como professor com apenas 18 anos em um curso técnico, foram 11 anos em sala de aula formando desenvolvedores fullstack no sul de Minas Gerais.

Javascript
Compartilhar X LinkedIn
Continue lendo

Insights relacionados