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 ?
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
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());
}
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
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();
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