Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Ambiguidade de metodos

Olá galera!

Estive testando dois metodos e percebi que os dois possuem a mesma função. Existe alguma diferença entre eles além da estruturação da qual é visivelmente distinto?

Segue as duas maneiras:

//Escrever arquivo pelo teclado e gravar em txt - Forma 01

public class TestaJavaIO {    
public static void main(String[] args) throws  FileNotFoundException {

Scanner s = new Scanner(System.in);
            PrintStream ps = new PrintStream("arquivo.txt");

while (s.hasNextLine()) {
    ps.println(s.nextLine());
    }
        ps.close();
    }

e

//Escrever arquivo pelo teclado e gravar em txt - Forma 02

public class TestaJavaIO2 {

public static void main(String[] args) throws IOException {
            Scanner entrada = new Scanner(System.in);
            PrintStream saida = new PrintStream(new FileOutputStream("arquivo.txt"));

    while (entrada.hasNextLine()) {
                saida.println(entrada.nextLine());
            }
            saida.close();
            entrada.close();
            }

Obrigado!

2 respostas
solução!

No Eclipse quando você coloca new PrintStream, o autocomplete vai te mostrar várias formas de criá-lo.

Umas das formas é passando o OutputStream (FileOutputStream, Teste 02), outra é utilizando apenas o nome do arquivo (Teste 01).

A seguinte descrição está no que faz apenas o nome do arquivo:

public PrintStream(String fileName) throws FileNotFoundException

Creates a new print stream, without automatic line flushing, with the specified file name. This convenience constructor creates the necessary intermediate OutputStreamWriter, which will encode characters using the default charset for this instance of the Java virtual machine.

Ou seja, ele mesmo cria um OutputStreamWriter automaticamente, por convenência, no outro você tem que criar.

Mas assim, os dois aparentemente fazem a mesma coisa :)

PS: Claro que por conviência de fazer coisas "mais rápido", você perde, por exemplo, a possibilidade de configurar o seu FileOutputStream de algum jeito específico.

Obrigado @Giovane