Pacote Java.util

Bom pessoal, na apostila j11 tem o codigo abaixo como uma formar de ler dados do teclado e gravar num arquivo de txt.

Scanner s = new Scanner(System.in);
PrintStream ps = new PrintStream("teste.txt");
		
while (s.hasNextLine()){
ps.println(s.nextLine());

Mas percebi q qdo rodo e digito uma string o programa grava ok mas se rodo de novo e digito outra string ele apaga a original e grava a atual.
Como teria de ser para gravar a entrada atual do teclado mas manter os dados originais ?

utilize isso:

BufferedWriter bufferr = new BufferedWriter(new FileWriter(ficheiro, true));

ai yhhik se estiver por ai pode me dar um exemplo dessa tua linha de comando dentro do codigo q eu implementei no primeiro post aqui?
Alguém mais ai pode ajudar tb galera?
valeu

pessoal esse codigo abaixo adiciona string ao file saida.txt sem apagar as anteriores. esse código diz a apostila foi criado pra uso até o java 4

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

public class TestaOutputStream {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
	
		OutputStream os = new FileOutputStream("saida.txt" , true); //indica o arquivo p/ gravação de dados , le bytes e escreve bytes no inicio do arquivo devido ao "true"
		OutputStreamWriter osw = new OutputStreamWriter(os); // lê os bytes decodifica para unicode e grava em char
		BufferedWriter bw = new BufferedWriter(osw); // lê os char, concatena e a monta a string p gravação
		
		bw.write("Terceira inserção"); // Grava no arquivo "Terceira inserção"
		bw.newLine(); // Passa o cursor para proxima linha
		bw.close();
		
		
		InputStream is = new FileInputStream("saida.txt"); //indica o arquivo p/ leitura (saida.txt) - lê bytes
		InputStreamReader isr = new InputStreamReader(is); //lê bytes, decodifica para Unicode e devolve em char
		BufferedReader br = new BufferedReader(isr); // lê char, concatena e devolve em string
		
		String c = br.readLine();
		
		while (c != null){
			System.out.println(c);
			c = br.readLine();
		}
		br.close();
		
	}

}

mas a j11 diz depois que tem uma maneira mais simples que essa, e que é suportada pelo java 5 em diante
mais ou menos assim:

Scanner s = new Scanner(System.in);  
PrintStream ps = new PrintStream("teste.txt");  
          
while (s.hasNextLine()){  
ps.println(s.nextLine());

porém esse codigo escreve um string mas apaga as anteriores que foram escritas.
como arrumar isso do jeito suportado pelo java 5

tava formatando meu pc…

cara tem tempo que nao uso isso…acho que é algo assim:

Scanner s = new Scanner(System.in);  
	String txt=s.next();
	BufferedWriter bufferr = new BufferedWriter(new FileWriter("teste.txt", true));           
	bufferr.write(txt);   
	bufferr.close();   

cara esquce o post anterior,dei uma olhada na documentação.
faça assim:

[code]
public class guj {

public static void main(String[] args) throws IOException {
	Scanner s = new Scanner(System.in);   
	FileOutputStream arquivo = new FileOutputStream("teste.txt", true);   
    PrintStream ps = new PrintStream(arquivo, true);   
	           
	while (s.hasNextLine()){   
	ps.println(s.nextLine()); 
	}

}
}[/code]

testei aqui ta funcionando.

flw

ai Mario
antes de mais nada obrigado pela ajuda
bom, considerando o codigo que vc me passou, que grava no file uma string q entrou via teclado, agora que implementar pra ler o file,
minha pergunta é: Usei Scanner(System.in) pra receber do teclado e o que uso pra ler o file ?
tanks man :slight_smile:

[quote=yhhik]tava formatando meu pc…

cara tem tempo que nao uso isso…acho que é algo assim:

Scanner s = new Scanner(System.in); String txt=s.next(); BufferedWriter bufferr = new BufferedWriter(new FileWriter("teste.txt", true)); bufferr.write(txt); bufferr.close(); [/quote]

sem quer ser chata irmao, esse codigo acima ficou bem silmples e legivel, o que a documentação diz em contrario que fez vc colocar o outro codigo abaixo?

public class guj {  
      
    public static void main(String[] args) throws IOException {  
        Scanner s = new Scanner(System.in);     
        FileOutputStream arquivo = new FileOutputStream("teste.txt", true);     
        PrintStream ps = new PrintStream(arquivo, true);     
                     
        while (s.hasNextLine()){     
        ps.println(s.nextLine());   
        }  
}  
}

Apesar da documentação dizer algo em contrario, o codigo abaixo seu mario tb cumpriu a missao direitinho pois salvou a string no file sem alterar o conteudo anterior

Scanner s = new Scanner(System.in);    
    String txt=s.next();  
    BufferedWriter bufferr = new BufferedWriter(new FileWriter("teste.txt", true));             
    bufferr.write(txt);     
    bufferr.close();

a bateria do note ta otima mas a do meu brain creio q so dura mmais 15 min
to analizando o teu outro codigo agora pra ver como faço um pra ler ao inves de gravar no file
diz a apostila j11 que o java 5 em diante tem um jeito mais simples de ler do que o codigo abaixo:

InputStream is = new FileInputStream("teste.txt"); //indica o arquivo p/ leitura (teste.txt) - lê bytes
		InputStreamReader isr = new InputStreamReader(is); //lê bytes, decodifica para Unicode e devolve em char
		BufferedReader br = new BufferedReader(isr); // lê char, concatena e devolve em string
		
		String c = br.readLine();
		
		while (c != null){
			System.out.println(c);
			c = br.readLine();
		}
		br.close();

nao durou nem 15 min
vou dormir
amnha eu continuo
valeu a ajuda ai
ufsss :smiley:

public class guj {
	           
     public static void main(String[] args) throws IOException {
	           
        FileReader file = new FileReader("teste.txt"); 
        BufferedReader bf = new BufferedReader(file);   
        String escrita = null;   
        while((escrita = bf.readLine()) != null) {   
            System.out.println(escrita);   
        }   
}
}

[quote=rafaelczy][quote=yhhik]tava formatando meu pc…

cara tem tempo que nao uso isso…acho que é algo assim:

Scanner s = new Scanner(System.in); String txt=s.next(); BufferedWriter bufferr = new BufferedWriter(new FileWriter("teste.txt", true)); bufferr.write(txt); bufferr.close(); [/quote]

sem quer ser chata irmao, esse codigo acima ficou bem silmples e legivel, o que a documentação diz em contrario que fez vc colocar o outro codigo abaixo?

[code]
public class guj {

public static void main(String[] args) throws IOException {  
    Scanner s = new Scanner(System.in);     
    FileOutputStream arquivo = new FileOutputStream("teste.txt", true);     
    PrintStream ps = new PrintStream(arquivo, true);     
                 
    while (s.hasNextLine()){     
    ps.println(s.nextLine());   
    }  

}
}
[/code][/quote]

esse ae é o seu código, so acrescentei isso:

 FileOutputStream arquivo = new FileOutputStream("teste.txt", true);  

o primeiro código está funcinando porém ele está ignorando o espaço.
flw

Valeu a ajuda ai Mario!
agora vou poder mudar de página na apostila
mas vou deixar aberto pq vai surgir mais duvidas do java.io
thanks :smiley: