File file = new File("c:\Arquivo.txt");
BufferedReader bf = new BufferedReader(new FileReader(file));
Scanner scan = new Scanner(bf);
String str = JOptionPane.showInputDialog("digite");
String readLine=null;
String bank=null;
while (scan.hasNext()) {
readLine = scan.next();
if(readLine.contains(str)){
readLine ="#" +readLine;
}
bank +=readLine;
}
System.out.println(readLine);
bf.close();
PrintWriter pw =new PrintWriter("C:\Arquivo.txt");
pw.write(bank);
pw.flush();
pw.close();
}
}
[resolvido]Gravação de linha por linha em arquivo txt
18 Respostas
Oi,
Utilize o FileOutputStream() ele possui um argumento booleano para append.
Tchauzin!
Bem disculpa eu nao sei que que eh isso.
Oi,Utilize o FileOutputStream() ele possui um argumento booleano para append.
Tchauzin!
nao faço a minima ideia do funcionamento
eu fiz um trem desse tipo mas nao to conseguindo gravar no msm arquivo
File file = new File("c:\Arquivo.txt");
FileInputStream bf = new FileInputStream(file);
Scanner scan = new Scanner(bf);
String str = JOptionPane.showInputDialog("digite");
String readLine=null;
String bank = "";
PrintWriter pw =new PrintWriter("C:\Arquivo1.txt");
while (scan.hasNext()) {
readLine = scan.next();
if(readLine.contains(str)){
readLine ="#" +readLine;
}
bank =readLine;
pw.println(bank);
}
bf.close();
pw.flush();
pw.close();
Cara, dá uma estudada no FileOutputStream (como a Lina comentou)…
tem diversos tutoriais bons por ai… dica: se vc utiliza FileInputStream para a leitura, utilize o FileOutpuStream para gravar…
Olha nao estou querendo nada facil mas eu juro que eu nao consigo entender as coisas lendo, e alem do mais eu sou bem iniciante e aprendi o pouco que sei foi forçando msm nem sei como pra falar a verdade, se vc pudesse me dar um exemplo pratico dessa aplicaçao juro que nao necessitaria mais de ajuda nisso =)
Oi,
É bem simples... Você poderá fazer:
// Abre o arquivo para gravação.
FileOutputStream
lo_os_file = new FileOutputStream(file,true);
try
{
// grava os dados no arquivo.
lo_os_file.write(bank.getBytes());
}
finally
{
// Fecha o arquiv.
lo_os_file.close();
}
Tchauzin!
Certo mas esse exemplo seu nao vai substituir meu arquivo e nem gravar linha por linha =(
vai continuar o msm arquivo e vai colocar a linha feita embaixo
mas preciso gravar linha por linha depois de fazer mudanças, e necessita ser no mesmo arquivo
ai segue o codigo
Oi,
Se você fizer o write dentro do while ele irá gravar linha por linha.
Se você quiser limpar seu arquivo antes de começar a gravar nele, apenas de um delete nele e crie ele novamente.
Como já foi dito, procure por FileInput e FileOutput, essa é a melhor solução.
Tchauzin!
Bem entao eu fiz isso msm mas como que eu vo fazer pra limpar o arquivo se eu to lendo dele no proprio while?
File file = new File("c:\Arquivo.txt");
FileInputStream fi = new FileInputStream(file);
FileOutputStream fo = new FileOutputStream(file,true);
Scanner scan = new Scanner(fi);
String str = JOptionPane.showInputDialog("digite");
String readLine="";
while (scan.hasNext()) {
readLine = scan.next();
if(readLine.contains(str)){
readLine ="#" +readLine;
}
fo.write(readLine.getBytes());
}
fi.close();
fo.close();
Oi,
Faz 2 rotinas. Uma que lê o arquivo e armazena sua informações em String e a outra que grava.
Não tente fazer isso tudo em uma codificação…
Tchauzin!
Sera que da certo, pois eu estou lendo de um arquivo e armazenando numa string, e nao da pra armazenar depois no arquivo txt com quebra de linha a string
ps: c deve ta me achando um burro mas eu so msm 
Pra ter quebra de linha basta vc colocar “\n” aonde vc quer que quebre.
E se for necessario na rotina que grava vc pode passar como parametro a string e o caminho do arquivo pra vc poder gravar.
[]'s
Oi,
O problema é que estou sem IDE para testar, mas acho que poderia ser feito assim:
File file = new File("c:\Arquivo.txt");
FileInputStream fi = new FileInputStream(file);
Scanner scan = new Scanner(fi);
String str = JOptionPane.showInputDialog("digite");
String readLine="";
String conteudo = "";
while (scan.hasNext()) {
readLine = scan.next();
if(readLine.contains(str)){
conteudo += "#"+readLine+"\r\n";
}
}
fi.close();
FileOutputStream fo = new FileOutputStream(file,true);
fo.write(conteudo.getBytes());
fo.close();
Ou fazer assim:
File file = new File("c:\Arquivo.txt");
FileInputStream fi = new FileInputStream(file);
Scanner scan = new Scanner(fi);
String str = JOptionPane.showInputDialog("digite");
String readLine="";
String conteudo = "";
while (scan.hasNext()) {
readLine = scan.next();
if(readLine.contains(str)){
conteudo += "#"+readLine+"\r\n";
}
}
fi.close();
String[]
conteudo_quebra = conteudo.split("\r\n");
FileOutputStream fo = new FileOutputStream(file,true);
for (int i = 0; i<conteudo_quebra.length; i++) {
fo.write(conteudo_quebra[i].getBytes());
}
fo.close();
Tchauzin!
Já fiz algo parecido usando as classes BufferedReader e BufferedWriter
Bem o primeiro funcionou mais ou menos o problema é que ele nao grava por cima e sim grava abaixo, o segundo nao grava =)
ouu me disculpa pelo trabalho q estou lhe dando =)
Poderia me dar um exemplo pratico =)?
Bem o primeiro funcionou mais ou menos o problema é que ele nao grava por cima e sim grava abaixo, o segundo nao grava =)
ouu me disculpa pelo trabalho q estou lhe dando =)
Depois de executar isso:
FileOutputStream fo = new FileOutputStream(file,true);
Você deve fazer:
file.delete(); //Ou clear() não lembro o método..
Tchauzin!
Bem o primeiro funcionou mais ou menos o problema é que ele nao grava por cima e sim grava abaixo, o segundo nao grava =)
ouu me disculpa pelo trabalho q estou lhe dando =)Depois de executar isso:
FileOutputStream fo = new FileOutputStream(file,true);Você deve fazer:
file.delete(); //Ou clear() não lembro o método..Tchauzin!
ouuu mtoo obrigadoo =))
mto obrigadooo msm
FileOutputStream fo = new FileOutputStream(file,false);
e deu certo ^^
ahuahua
Cara, para manipulação de arquivos, sugiro que use a API Commons IO da Apache: <http://commons.apache.org/io/>
no site tem exemplos, docs, e tudo mais.