Este artigo aborda a utilização de Streams, sequências de bytes criados na memória que podem ser empregados para ler, gravar e copiar informações, oferecendo recursos adicionais para a manipulação dos dados, apresentando também uma forma de empregá-los na elaboração de uma simples ferramenta de gerenciamento de Downloads em segmentos, baseada em Threads, que permitem a execução de tarefas em paralelo.
Em que situação o tema é útil
Manipular informações em nível de bytes, podendo copiar arquivos ou dados de uma forma direta ou mais elaborada, podendo ainda “recortar” tais dados e empregar o conceito de concorrência nos projetos através da utilização de Threads.
Streams
A informação é um dos pilares no ambiente computacional. Todos os dias, mais e mais dados são lidos, copiados e compartilhados entre os usuários. Ter à disposição um mecanismo capaz de oferecer diversos recursos para a manipulação das mais variadas informações, torna-se algo essencial em grande parte das aplicações, e uma tecnologia que pode ser empregada para este fim é o Stream. Ele pode ser resumido como uma sequência de bytes presente na memória, que oferece ao desenvolvedor a possibilidade de copiar, ler e gravar as informações, enviando-as para um destino desejado, que pode ser outro Stream ou um meio físico de armazenamento, como o HD. Sendo assim, a aplicação pode “quebrar” arquivos binários e posteriormente, reuni-los novamente, como é o caso de um Software gerenciador de Downloads. O Delphi conta com uma variedade de classes que podem ser empregadas para as mais diversas tarefas empregando Streams, que por sua vez possuem muitos métodos importantes. Neste artigo, serão apresentadas as classes básicas para a utilização deste recurso, empregando técnicas para dividir um arquivo qualquer em três partes sem corrompê-lo e assim efetuar o Download do mesmo paralelamente, recorrendo também ao uso de Threads.
A informação é um fator extremamente importante para todos em qualquer contexto, seja na informática, nos relacionamentos, estudo, trabalho, etc. No ambiente computacional e, mais especificamente, dentro do desenvolvimento de Software existem vários meios para a manipulação das informações, que podem ser simples através de uma rápida e objetiva função, ou mais complexas, onde demandam maiores recursos. Outro fator importante é com relação à troca das informações entre as entidades envolvidas, como é o caso das redes e em especial, a Internet, onde mecanismos devem ser implementados para que todo o processo ocorra de forma satisfatória. A comunicação no ambiente computacional tem como um de seus pilares os protocolos, onde o TCP (Transfer Control Protocol) merece ser evidenciado, uma vez que fornece a garantia de que as informações serão devidamente entregues ao seu destinatário, porém, além deste, uma variedade de tecnologias podem ser empregadas quando surge a necessidade de executar uma tarefa mais específica, como é o caso da transferência de um arquivo binário por exemplo. Um recurso que pode ser adotado para a manipulação e transferência de informações de uma forma mais ampla é o Stream. Este pode ser resumido como um fluxo de dados presente na memória, que tem um início e um fim, sendo constituído por uma sequência de bytes, permitindo que a aplicação possa percorrer tais dados obtendo informações como tamanho, por exemplo, tendo um funcionamento semelhante ao processo de navegação pelos registros de um DataSet. Além disso, os Streams podem ser utilizados para manipular uma diversidade de tipos de dados, como imagens, áudio, binários, textos e assim por diante, bem como ter seu tamanho estendido até os limites disponíveis e permitidos pela memória física.
No cenário de Streams é muito comum ouvir o termo Streaming. Como é uma palavra inglesa no gerúndio, indica que é uma ação que está ocorrendo, ou em outras palavras, o momento em que um determinado Stream está sendo utilizado para a transferência das informações, podendo ser definido então como um fluxo constante de dados. Este processo é muito empregado na Internet principalmente em áudio e vídeo, uma vez que tal recurso permite que determinado arquivo possa ter sua reprodução iniciada sem que o mesmo tenha que ser obtido completamente, o que poderia levar um tempo considerável se o arquivo em questão for grande. Contudo, dentro deste contexto de Streaming para redes como a Internet, existem outros conceitos e técnicas que são empregados, tais como protocolos específicos, otimização de transmissão, entre outros.
Outro recurso que é comum de ser adotado quando Streams são empregados é o Buffer. Ele por sua vez, também está contido em uma área da memória, podendo ser utilizado para a leitura e gravação dos dados, porém ele tem a função de armazenar determinada informação temporariamente, informação esta que foi produzida, mas que ainda não foi consumida. Sendo assim, a utilização de Buffers também é muito útil quando a velocidade da transferência de dados entre as entidades envolvidas é diferente ou podem ocorrer momentos de pausa na troca, como é o caso de aplicações de multimídia rodando sobre a Internet.
Com relação ao Delphi, desde suas versões anteriores, a classe base empregada na utilização de Streams é a TStream, permitindo que os dados possam ser lidos, copiados ou gravados para diversos meios, tais como memória dinâmica, memória estática, etc. Também vale a pena citar que esta classe é do tipo abstrata, que por sua vez, é constituída por alguns métodos que não possuem uma definição (virtual) e devem ser elaborados nas classes derivadas, ou em outras palavras, a classe abstrata é a definição de determinado objeto de forma incompleta. Sendo assim, existem outras classes que descendem de TStream, onde cada uma é direcionada a manipulação de determinado tipo de dado e implementam funções mais especificas para seu objetivo. A ...
Confira outros conteúdos:
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.