Article image

CA

Claudio Andrade28/06/2024 10:46
Compartilhe

Entrada e Saída de Dados em Java

  • #Java

Entrada e saída de dados em Java



Quando se trata de ler dados em Java, três classes vêm à mente: InputStream, BufferedReader, e Scanner. Embora compartilhem algumas similaridades, cada uma tem seu propósito único e características.

InputStream: Um InputStream é uma classe fundamental que fornece uma forma de ler bytes a partir de qualquer fonte (por exemplo, arquivo, rede). É um fluxo de dados bruto que requer processamento adicional para converter os bytes em dados significativos. Pense nela como um "fluxo de entrada de dados bruto, sem processamento inicial".


// Java program to demonstrate BufferedReader

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class Test {

public static void main(String[] args)

throws IOException

{

// Enter data using BufferReader

BufferedReader reader = new BufferedReader(

new InputStreamReader(System.in));


// Reading data using readLine

String name = reader.readLine();


// Printing the read line

System.out.println(name);

}

}


BufferedReader: Um BufferedReader é uma classe mais alta que fornece uma forma de ler dados textuais (por exemplo, strings) a partir de um fluxo de saída subordinado (por exemplo, arquivo, console). É projetado para ler dados de carácter e proporciona suporte incorporado para transformação de formatos comuns. Pense nela como um "fluxo de entrada de texto".


// Java Program to Illustrate BufferedReader Class

// Via Its Methods


// Importing required classes

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;


// Class

class GFG {


// Main driver method

public static void main(String[] args)

throws IOException

{


// Creating object of FileReader and BufferedReader

// class

FileReader fr = new FileReader("file.txt");

BufferedReader br = new BufferedReader(fr);


char c[] = new char[20];


// Illustrating markSupported() method

if (br.markSupported()) {


// Print statement

System.out.println(

"mark() method is supported");


// Illustrating mark method

br.mark(100);

}


// File Contents is as follows:

// This is first line

// this is second line


// Skipping 8 characters

br.skip(8);


// Illustrating ready() method

if (br.ready()) {


// Illustrating readLine() method

System.out.println(br.readLine());


// Illustrating read(char c[],int off,int len)

br.read(c);


for (int i = 0; i < 20; i++) {

System.out.print(c[i]);

}


System.out.println();


// Illustrating reset() method

br.reset();

for (int i = 0; i < 8; i++) {


// Illustrating read() method

System.out.print((char)br.read());

}

}

}

}


Scanner: Um Scanner é uma classe utilitária que simplifica o processo de leitura de dados de entrada a partir de várias fontes (por exemplo, terminal, arquivo, rede). É projetado para fornecer fácil acesso a tipos de entrada comumente usados, como inteiros, números floats, strings e datas. Pense nela como um "fluxo de entrada fácil".

Exemplo:


// Java program to read data of various types

// using Scanner class.

import java.util.Scanner;


// Driver Class

public class ScannerDemo1 {

// main function

public static void main(String[] args)

{

// Declare the object and initialize with

// predefined standard input object

Scanner sc = new Scanner(System.in);


// String input

String name = sc.nextLine();


// Character input

char gender = sc.next().charAt(0);


// Numerical data input

// byte, short and float can be read

// using similar-named functions.

int age = sc.nextInt();

long mobileNo = sc.nextLong();

double cgpa = sc.nextDouble();


// Print the values to check if the input was

// correctly obtained.

System.out.println("Name: " + name);

System.out.println("Gender: " + gender);

System.out.println("Age: " + age);

System.out.println("Mobile Number: " + mobileNo);

System.out.println("CGPA: " + cgpa);

}

}


Em resumo:

  • InputStream é um fluxo de bytes simples, bruto
  • BufferedReader é um fluxo de dados de texto com suporte para formatação incorporada
  • Scanner é uma classe utilitária para leitura de dados de entrada fácil

Quando escolher entre essas classes, considere o tipo de dados que você está trabalhando e o seu caso específico. Por exemplo:

Use InputStream quando precisar de acesso bruto a bytes;

Use BufferedReader quando estiver trabalhando com dados textuais que requerem formatação;

Use Scanner quando quiser uma forma fácil e fácil de leitura de dados.

  • Saída de dados

Quando se trata de escrever dados em Java, três classes vêm à mente: PrintStream, BufferedWriter, e PrintWriter. Embora compartilhem algumas similaridades, cada uma tem seu propósito único e características.

PrintStream: Um PrintStream é uma classe fundamental que fornece uma forma de escrever bytes a partir de qualquer fluxo de saída (por exemplo, arquivo, console). É um fluxo de dados bruto que requer processamento adicional para formatar os dados para consumo humano. Pense nela como um "fluxo de saída bruto".


Import java.io.FileOutputStream;

  • import java.io.PrintStream;
  • public class PrintStreamTest{
  • public static void main(String args[])throws Exception{
  • FileOutputStream fout=new FileOutputStream("D:\\testout.txt");
  • PrintStream pout=new PrintStream(fout);
  • pout.println(2016);
  • pout.println("Hello Java");
  • pout.println("Welcome to Java");
  • pout.close();
  • fout.close();
  • System.out.println("Success?");
  • }
  • }


BufferedWriter: Um BufferedWriter é uma classe mais alta que fornece uma forma de escrever dados textuais (por exemplo, strings) a partir de um fluxo de saída subordinado (por exemplo, arquivo, console). É projetado para escrever dados de carácter e proporciona suporte incorporado para formatação comum. Pense nela como um "fluxo de saída de texto".


Import java.io.*;

  • public class BufferedWriterExample {
  • public static void main(String[] args) throws Exception{
  • FileWriter writer = new FileWriter("D:\\testout.txt");
  • BufferedWriter buffer = new BufferedWriter(writer);
  • buffer.write("Welcome to JavaWorld.");
  • buffer.close();
  • System.out.println("Success");
  • }
  • }


PrintWriter: Um PrintWriter é uma classe utilitária que simplifica o processo de escrita de dados formatados a partir de várias fontes (por exemplo, console, arquivo). É projetado para fornecer fácil acesso a formatações comumente usadas, como strings e datas. Pense nela como um "fluxo de saída fácil".


Import java.io.File;

  • import java.io.PrintWriter;
  • public class PrintWriterExample{
  • public static void main(String[] args) throws Exception {
  • //Data to write on Console using PrintWriter
  • PrintWriter writer = new PrintWriter(System.out);
  • writer.write("Welcome to Java World.");
  • writer.flush();
  • writer.close();
  • //Data to write in File using PrintWriter
  • PrintWriter writer1 =null;
  • writer1 = new PrintWriter(new File("D:\\testout.txt"));
  • writer1.write("Like Java, Spring, Hibernate, Android, PHP etc.");
  • writer1.flush();
  • writer1.close();
  • }
  • }


Em resumo:

  • PrintStream é um fluxo de bytes simples, não processado inicialmente;
  • BufferedWriter é um fluxo de dados textuais com suporte para formatação incorporada;
  • PrintWriter é uma classe utilitária para escrita de dados formatados de forma fácil.

Quando escolher entre essas classes, considere o tipo de dados que você está trabalhando e o seu caso específico. Por exemplo:

Use PrintStream quando precisar de acesso bruto a bytes;

Use BufferedWriter quando estiver trabalhando com dados textuais que requerem formatação;

Use PrintWriter quando quiser uma forma fácil e fácil de escrita de dados.

Compartilhe
Comentários (1)
Ronaldo Schmidt
Ronaldo Schmidt - 28/06/2024 21:38

Texto gigante com muita informação para processar.

Me diz ai amigo o que foi que aprendeu com tudo isso?

Faltou uma opinião mais clara e uma conclusão.

Mas acho que atingiu o limite de tokens do chatgpt.

Não me entenda mal mas esse tipo de artigo desmotiva a comunidade.

Tenho certeza que o ser humano em voce produz texto muito melhores e que agregam conhecimento.

Descreva suas experiencias e desafios na carreira.

O que aprendeu e o que pode ensinar.

Seu currículo é impressionante e tem muita bagagem.

Nos ensine e nos aconselhe e nos mostre o caminho que seguiria se pudesse recomeçar.

Assunto é o que não falta.

Vamos ficar esperando!

Obrigado.