As classes necessarias para se trabalhar com I/O estao localizadas no pacote java.io. Assim como em C, o java faz distincao entre fluxos de bytes e fluxos de caracteres. A classe base para os fluxos de bytes sao InputStream, para leitura de bytes, e OutputStream, para a escrita de bytes.Leitura de fluxos de bytesPara lermos um fluxo de bytes e imprimir os valores lidos na tela, podemos proceder da seguinte maneira:Em pseudocodigo:Uma descricao mais detalhada de InputStream pode ser encontrada em http://download.oracle.com/javase/6/docs/api/java/io/InputStream.htmlLembrando que InputStream e uma interface, devemos instanciar classes que implementem InputStream. Dentre os principais, podemos citar ByteArrayInputStream e FileInputStream. ByteArrayInputStreamE a implementacao "mais default" de um InputStream.Contem um buffer interno que contem bytes que podem ser lidos do stream. Um contador interno mantem a posicao do proximo byte a ser lido pelo metodo read.Fechar um ByteArrayInputStream nao tera efeito. O metodo nesta classe pode ser chamado apos o stream ser fechado nao lancara IOException.FileInputStreamUm FileInputStream obtem entrada de bytes de um arquivo em um sistema de arquivos. Quais arquivos sao disponiveis depende do sistema hospedeiro. ideal para leitura de fluxos de dados como imagens. Componentes de aplicacao sao os blocos de construcao essenciais para uma aplicacao Android. Cada componente e um ponto diferente pelo qual o sistema pode interagir com sua aplicacao. Nem todos os componentes sao pontos de entrada para o usuario e alguns dependem de outros, mas cada um existe com sua propria identidade e regras unicas que ajudam a definir o comportamento geral da sua aplicacao.Ha quatro tipos diferentes de componentes de aplicacao. Cada tipo serve a um proposito distinto e tem um ciclo de vida distinto que define como o componente e criado e destruido.Aqui estao os quatro tipos de componentes de aplicacao:ActivityUma atividade (activity) representa uma tela com uma interface de usuario. Por exemplo, uma aplicacao de email deve ter uma activity que exibe a lista de novos emails, outra activity para escrever um email, e outra activity para ler os emails. Embora as acitivities trabalhem juntas para formar uma experiencia de usuario coesa na aplicacao de email, cada uma e independente das outras. Assim, uma aplicacao diferente pode iniciar qualquer um dessas activities (se a aplicacao de email permitir). Por exemplo, uma aplicacao de camera pode iniciar a activity que escreve um novo email na aplicacao de email, afim de permitir que o usuario compartilhe uma foto.Uma activity e implementada como uma subclasse de Activity.ServiceUm servico (service) e um componente que roda em segundo plano realizando operacoes que levam muito tempo de execucao ou relizando trabalho para processos remotos. Um service nao fornece uma interface de usuario. Por exemplo, um servico deve tocar musica em plano de fundo enquanto o usuario esta em uma aplicacao diferente, ou ele deve pegar dados da rede sem bloquear a interacao do usuario com uma activity. Outro componente, como uma activity, pode iniciar o servico e deixa-lo rodando ou anexa-lo para poder iteragir com ele.Um servico e implementado como uma subclasse de Service.Content providersUm content provider gerencia um conjunto de dados da aplicacao que e compartilhado. Voce pode