Porque:
PrintStream saida = new PrintStream(new FileOutputStream("copia.txt"));
E não:
PrintStream saida = new PrintStream("copia.txt");
Porque:
PrintStream saida = new PrintStream(new FileOutputStream("copia.txt"));
E não:
PrintStream saida = new PrintStream("copia.txt");
Olá André! A classe PrintStream possui um construtor que recebe somente uma String como parâmetro. Mas possui um construtor que recebe um OutputStream e por FileOutputStream herdar de OutputStream então foi utilizado esta classe que possui um construtor com o nome do arquivo.
Espero ter ajudado! Bons Estudos!
Fiz dessa forma e deu certo também:
PrintStream saida = new PrintStream("copia.txt");
Sim, dessa forma também funciona por a classe PrintStream ter um construtor que recebe somente uma String como nome do arquivo.
Se ainda restaram dúvidas: é possível utilizam ambos formatos, pois a classe PrintStream possui construtores para ambas as formas: uma para receber uma string (como é o caso do nome do arquivo) e outra recebendo OutputStream (como FileOutputStream herda de OutpuStream, é possível usá-la para referenciar um arquivo).