Uma classe java.io que age como ponte entre streams orientad...

Próximas questões
Com base no mesmo assunto
Q40398 Programação
Uma classe java.io que age como ponte entre streams orientadas a caractere e streams orientadas a byte, que escreve caracteres codificando-os em bytes:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta é a C - OutputStreamWriter.

A questão aborda um conceito importante no contexto de entrada e saída (I/O) em Java, que é a diferença entre streams orientadas a caractere e streams orientadas a byte. Para resolver questões como essa, é necessário compreender que em Java existem duas categorias principais de streams:

  • Byte Streams: São usados para manipular fluxos de bytes brutos, como os de arquivos binários, e têm classes base como InputStream e OutputStream.
  • Character Streams: São usados para manipular caracteres, levando em conta a codificação de caracteres e têm classes base como Reader e Writer.

O OutputStreamWriter é uma classe que faz a ponte entre essas duas categorias de streams: ele toma caracteres de um stream orientado a caracteres e os codifica em bytes para um stream orientado a bytes. Isso é especialmente útil quando você precisa escrever texto para uma saída que aceita apenas bytes, como um arquivo binário ou um socket de rede, garantindo a correta codificação dos caracteres para bytes.

As outras opções não realizam essa função específica:

  • ObjectOutputStream é usado para escrever objetos em um OutputStream como um fluxo de bytes.
  • ObjectStreamField é uma classe auxiliar que descreve os campos de um objeto serializável.
  • FileWriter é uma subclasse de OutputStreamWriter que já está vinculada a um arquivo, mas não é uma ponte entre caracter e byte streams.
  • RandomAccessFile permite ler e escrever a um arquivo em qualquer posição, mas não serve como ponte entre os dois tipos de streams mencionados.

Portanto, a OutputStreamWriter é a classe que realiza a função de converter caracteres em bytes, adequadamente codificados, e por isso é a resposta certa para a pergunta.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Java tem dois tipos de fluxos de arquivos: Fluxo de Bytes e Fluxo de Caracteres.

Para fluxo de bytes temos as classes abstratas InputStream (entrada) e OutputStream (saída).

Algumas subclasses:  BufferedInputStream, DataInputStream, BufferedOutputStream (...)

Para fluxo de caracteres temos, também classes abstratas, Writer e  Reader.

Exemplos de subclasses: BufferedWriter e BufferedReader

Mnemônicamente podemos inferir que OutputStreamWriter ( OutputStream + Writer ) agregam as duas funcionalidades,isto é, recebe um fluxo de caracteres que são gravados em bytes com o enconding especificado.Na API:An OutputStreamWriter is a bridge from character streams to byte streams: Characters written to it are encoded into bytes using a specified charset. The charset that it uses may be specified by name or may be given explicitly, or the platform's default charset may be accepted. A classe FileWriter é uma subclasse de OutputStreamWriter e ObjectOutputStream é uma subclasse de OutputStream.Só uma curiosidade:System.in é uma instância de InputStream. Já System.out e System.err são instâncias da classe PrintStream.




Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo