Este guia explica como trabalhar com streams graváveis em Node.js.
Como trabalhar com fluxos graváveis em Node.js?
O ' gravável ”stream pode ser usado para inserir novos dados no arquivo ou pode colocar o conteúdo de outro stream aleatório. A conversão ou posicionamento de dados acontece principalmente com a ajuda do “ cano() ”Método. Este método torna o processo de conversão e atribuição de conteúdo mais conveniente, ao mesmo tempo que reduz as chances de colisão de dados.
Sintaxe
O fluxo gravável é criado invocando o método abaixo:
fs. criarWriteStream ( 'arquivoalvo.ext' ) ;
Na sintaxe acima, o “ creatWriteStream() ”é invocado pelo objeto do importado“ fs ” Módulo, e o arquivo no qual os dados serão gravados é passado como parâmetro.
Vamos dar uma olhada em alguns exemplos de streams graváveis em Node.js.
Exemplo 1: Escrevendo o conteúdo de outro arquivo usando um fluxo gravável
No exemplo abaixo, o arquivo aleatório é enviado pelo Stream legível e, em seguida, o conteúdo do arquivo é colocado em outro arquivo disponível no Stream gravável:
era fsObj = exigir ( 'fs' ) ;
const fluxo de dados = fsObj. criarReadStream ( 'meunovoarquivo1.txt' ) ;
const escreverStream = fsObj. criarWriteStream ( 'meunovoarquivo2.txt' ) ;
fluxo de dados. cano ( escreverStream ) ;
Descrição do código acima:
- Primeiro, o “ fs ”O módulo é importado e seu objeto é armazenado no novo“ fsObj ' variável.
- A seguir, com a ajuda de “ fasObj ”invocar o“ criarReadStream() ”Método para criar um fluxo legível e passar o arquivo legível selecionado como seu parâmetro.
- Em seguida, o fluxo gravável é criado invocando o “ criarWriteStream() ”Método para escrever o conteúdo no arquivo fornecido.
- Armazene os resultados dos métodos invocados acima no “ fluxo de dados ' e ' escreverStream ”variáveis respectivamente.
- Finalmente, invoque o “. cano() ”método seguido por“ fluxo de dados ”E liderando com o“ escreverStream ”variáveis.
Agora, execute o arquivo que contém (controlFlow.js) executando o comando abaixo:
Exemplo 2: Gravando o conteúdo em arquivo usando o método “stream.write()”
Neste exemplo, o “ escrever() ”O método é usado para gravar dados no arquivo disponível no Stream gravável:
era fsObj = exigir ( 'fs' ) ;const httpObj = exigir ( 'http' ) ;
const servirLocaly = httpObj. criarServidor ( ( solicitação, resposta ) => {
tentar {
const cellStream = fsObj. criarWriteStream ( 'meunovoarquivo2.txt' ) ;
cellStream. escrever ( 'Dados a serem colocados no arquivo de destino.' ) ;
cellStream. fim ( ) ;
resposta. fim ( 'Dados escritos por meio de fluxo gravável' )
}
pegar ( erro ) {
console. erro ( erro ) ;
}
} ) ;
servirLocaly. ouvir ( 8080 , ( ) => {
console. registro ( 'O servidor está rodando no número da porta localhost: '8080' ' )
) ;
A descrição do código acima é a seguinte:
- Primeiro, importe o “ fs ' e ' http ”módulos e armazenam seus objetos em“ fsObj ' e ' httpObj ”variáveis respectivamente.
- Em seguida, o servidor foi criado invocando o “ criarServidor() ”E armazenando este servidor recém-criado em um“ servirLocaly ' variável.
- Em seguida, use um “ tentar ”bloco dentro da função de retorno de chamada do método e invoca o“ criarWriteStream() ”Método usando o“ fsObj ' variável.
- Passe o arquivo de destino no qual o conteúdo precisa ser inserido, entre parênteses deste método e armazene o resultado no “ cellStream ' variável
- Utilize o “ escrever() ”Com esta variável e passe uma mensagem fictícia entre parênteses que será escrita no arquivo de destino.
- Feche o Stream invocando o “ fim() ”E exibir uma mensagem de sucesso na página da web invocando o“ resposta.end() ”Método. Onde ' resposta ”É o parâmetro de retorno de chamada do“ criarServidor ”Método.
- Utilize o “ pegar ”Bloco para lidar com quaisquer erros ocorridos.
- Por fim, ouça ou configure o servidor pelo número da porta “ 8080 ”E exibir a mensagem de sucesso com a ajuda de sua função de retorno de chamada.
A saída gerada mostra que o texto fornecido foi escrito usando o “ escrever() ”método:
Exemplo 3: Gravando os mesmos dados em vários arquivos
Neste exemplo, um único arquivo será lido do stream usando o “ criarReadStream() ”Método. Em seguida, o conteúdo lido é gravado em vários arquivos usando o “ criarWriteStream() ' e ' .cano() ' métodos:
era fsObj = exigir ( 'fs' ) ;const fluxo de dados = fsObj. criarReadStream ( 'meunovoarquivo1.txt' ) ;
const writeStream1 = fsObj. criarWriteStream ( 'meunovoarquivo2.txt' ) ;
const writeStream2 = fsObj. criarWriteStream ( 'usecase.txt' ) ;
fluxo de dados. cano ( writeStream1 ) ;
fluxo de dados. cano ( writeStream2 ) ;
No trecho de código acima:
- O ' criarReadStream() ”é invocado e o arquivo cujo conteúdo precisa ser lido é passado como seu parâmetro. O resultado deste método é armazenado no “ fluxo de dados ' variável.
- A seguir, o “ criarWriteStream() ”O método é chamado e o arquivo de destino é passado como seu parâmetro.
- Da mesma forma, o caminho para o segundo arquivo também é passado como um fluxo gravável e os resultados são armazenados em “ writeStream1 ' e ' writeStream2 ”variáveis.
- Depois disso, usando o “ .cano() ”Método o conteúdo armazenado no“ fluxo de dados ”A variável é atribuída ao“ writeStream1 ' e ' writeStream2 ”variáveis.
A saída gerada mostra que o conteúdo do arquivo fornecido foi inserido nos arquivos fornecidos nos fluxos:
Isso é tudo sobre o funcionamento de streams graváveis em Node.js.
Conclusão
Para trabalhar com fluxos graváveis, o método de “ criarWriteStream() ”É invocado através do“ fs ”objeto do módulo. O caminho do arquivo de destino no qual o conteúdo precisa ser gravado é passado como parâmetro. Para escrever o conteúdo de outro stream o “ .cano() ”O método é utilizado. O ' escrever() ”O método também é útil quando se trata de escrever conteúdo diretamente no arquivo de destino. Esta postagem ilustrou o procedimento de trabalho com fluxos graváveis.