Classe PrintStream - Escrevendo no arquivo[AJUDA]

2 respostas
brenojava123

Galera to aprendendo java, eu estou tentando fazer uma especiade backup, tipo eu ja tenho um arquivo pronto e quero salvar isso em outro arquivo, o que estou fazendo de errado ? pois nao ta salvando, o Eclipse da um erro =(

public class GravandoNoArquivo {
	public static void main(String[] args) throws Exception {

		InputStream is = new FileInputStream("arquivo_cap15_LendoDoArquivo.txt");
		PrintStream ps = new PrintStream("backup_arquivo.txt");
		Scanner sc = new Scanner(is);

		while (sc.hasNextLine()) {
			System.out.println(sc.nextLine());
			ps.println(sc.nextLine());
		}

	}// fim main
}

eu tenho quase certeza que o problema esta na linha do [color=red]ps.println(sc.nextLine());[/color] pois se eu tiro essa linha o programa funfa normalmente =/ ajuda ae

ps(erro que esta dando): Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at br.com.caelum.cap15.GravandoNoArquivo.main(GravandoNoArquivo.java:17)

2 Respostas

RichardVaugh

Breno, acontece que quando você faz um nextLine() o Scanner consome a linha, então antes de recuperar uma nova linha você precisa verificar novamente se existe uma linha disponível.
No seu caso, você teria que jogar o conteúdo no nextLine() em uma String e daí sim utilizar, caso contrário cada vez que passa nesse seu loop ele vai ler 2 linhas…

brenojava123

Richard nao se se eu entendi mto bem, o erro esta no ps.println(sc.nextLine()) ?

tem q ser assim do jeito q eu mudei ??

while (sc.hasNextLine()) { String linha = sc.nextLine(); System.out.println(linha); ps.println(linha); }

é desse jeito ??
se for eu ainda nao entendi mto bem o negocio de o NextLine consumir a linha =D, se pudesse dar uma explicadinha melhor =x

Criado 15 de janeiro de 2011
Ultima resposta 15 de jan. de 2011
Respostas 2
Participantes 2