galera… acredito até que seja meio simples, meu problema é o seguinte, foi pedido pra mim implementa no meu programa ja feito, que ele gerasse log, algo simples, um log .txt simples…
eu criei uma classe aqui, que le o arquivo antigo, copia o texto dele, pula uma linha e insere uma nova ocorrencia de log (no caso uma nova linha).
o problema é que o \n usado pra pula linha em strings em java, esta gerando aqueles quadrado no arquivo txt, tipo, nao ta intendendo q é pra pula a linha mais sim ta passando alguma coisa criptografada, ou algum codigo…sei la…
alguem ai sabe o que que eu devo fazer pra ele pula a linha???
Cara, pra pular linha tu podes mandar imprimir uma linha sem nada, fazendo isso (vai depender do objeto que você está usando para escrever no arquivo txt):
fileObj.writeln();
Ou então, você tenta usar \r\n ou \n\r.
T
thingol
Use: System.getProperty (“line.separator”), ou o que é mais fácil, println ou printf ("%n"). Exemplo:
Yki eu tava usando DataOutputStream, o problema é que ele não tem o metodo ln.
tingol, eu tentei fazer isso, e crio o arquivo, mais o arquivo fica em branco…quando eu tentei escrever em um arquivo que ja existia (eu criei um arquivo txt e coloquei texto nele) ai ele apaga tudo e dexa o arquivo em branco tb…
não sei se intendi direito como que era pra fazer…
to copiando o codigo aqui:
importjava.io.FileInputStream;importjava.io.FileWriter;importjava.io.IOException;importjava.io.PrintWriter;importjavax.swing.JOptionPane;publicclassLog{publicLog(){Stringendereco=JOptionPane.showInputDialog("digite o endereço a inserir como queda: ");Stringocorrencia=JOptionPane.showInputDialog("digite ocorrencia a ser inserida: ");// String saida=lelog(endereco);insereQueda(endereco,ocorrencia);// JOptionPane.showMessageDialog(null, saida);}publicstaticvoidmain(Stringargs[]){Logl=newLog();}FileInputStreamfis;//File arquivo;PrintWriterpw;// = new PrintWriter (new FileWriter ("blog.txt"));publicbooleaninsereQueda(Stringendereco,Stringocorrencia){booleansucesso=false;try{pw=newPrintWriter(newFileWriter(endereco));}catch(IOExceptionex){ex.printStackTrace();}try{JOptionPane.showMessageDialog(null,"arquivo = "+endereco+" e ocorrencia = "+ocorrencia);pw.println(ocorrencia);//conteudo+="\n"+ocorrencia;sucesso=true;returnsucesso;}catch(Exceptione){returnfalse;}}}
editei pra coloca as tag code…
M
maior_abandonado
ln não…writeln…
o meu codigo usando o datainputstream fico assim:
importjava.io.DataOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStream;importjavax.swing.JOptionPane;publicclassLog{publicLog(){Stringendereco=JOptionPane.showInputDialog("digite o endereço a inserir como queda: ");Stringocorrencia=JOptionPane.showInputDialog("digite ocorrencia a ser inserida: ");// String saida=lelog(endereco);insereQueda(endereco,ocorrencia);// JOptionPane.showMessageDialog(null, saida);}publicstaticvoidmain(Stringargs[]){Logl=newLog();}FileInputStreamfis;Filearquivo;OutputStreamsaida_baixa;DataOutputStreamsaida_alta;publicbooleaninsereQueda(Stringendereco,Stringocorrencia){booleanverificaExistencia,sucesso=false;arquivo=newFile(endereco);// c:/conexãoLog.txtStringconteudo;booleanexiste=arquivo.exists();if(existe){conteudo=lelog(endereco);try{saida_baixa=newFileOutputStream(arquivo);saida_alta=newDataOutputStream(saida_baixa);//conteudo+="\n"+ocorrencia;saida_alta.writeUTF(conteudo+"\n"+ocorrencia);sucesso=true;}catch(FileNotFoundExceptionex){JOptionPane.showMessageDialog(null,"O arquivo de log foi apagado no meio da execução");}catch(IOExceptionex){JOptionPane.showMessageDialog(null,"Erro ao gravar o arquivo");}}else{try{saida_baixa=newFileOutputStream(arquivo);saida_alta=newDataOutputStream(saida_baixa);saida_alta.writeBytes(ocorrencia);sucesso=true;}catch(FileNotFoundExceptionex){ex.printStackTrace();}catch(IOExceptionex){ex.printStackTrace();}}returnsucesso;}publicStringlelog(Stringendereco){try{fis=newFileInputStream(endereco);}catch(Exceptionex){//ex.printStackTrace();JOptionPane.showMessageDialog(null,"não foi possivel ler o arquivo "+endereco);}Stringtexto="";inttemp;chardata;try{do{temp=fis.read();data=(char)temp;if(temp!=-1)texto+=data;}while(temp!=-1);}catch(Exceptionex){}returntexto;}}
o problema desse ai, é que ele até cria o arquivo, escreve nele, quando eu abro pelo windows la ta escrito o q o java deveria escrever, mais no lugar das pulada de linha esta aqueles quadrado chato…
M
maior_abandonado
mais alguem ai pode me ajudar?? eu realmente não sei onde foi q eu errei…
eu fico mto grato…
T
thingol
a) A única aplicação do Windows que não sabe que um “\n” é uma quebra de linha é o Notepad ou Bloco de Notas. Use o Wordpad ou outro programa para ler o arquivo.
b) Eu disse que em vez de “\n” você tem de usar System.getProperty (“line.separator”) acima. Tente novamente.
M
maior_abandonado
aeeeeeeeee
vlw tingol…funciono…
brigadão mesmo… eu não tinha intendido q o System.getProperty (“line.separator”) q ia pula a linha, achei q o fw.println pulava no final simplesmente…consegui fazerr funiona…
brigado mesmo…
só dexando o codigo pra caso seja urtil pra alguem numa futura e eventual busca:
importjava.io.DataOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStream;importjavax.swing.JOptionPane;publicclassLog{publicLog(Stringendereco,Stringocorrencia){// String saida=lelog(endereco);insereLinha(endereco,ocorrencia);// JOptionPane.showMessageDialog(null, saida);}publicstaticvoidmain(Stringargs[]){Stringendereco=JOptionPane.showInputDialog("digite o endereço a inserir como queda: ");Stringocorrencia=JOptionPane.showInputDialog("digite ocorrencia a ser inserida: ");Logl=newLog(endereco,ocorrencia);}FileInputStreamfis;Filearquivo;OutputStreamsaida_baixa;DataOutputStreamsaida_alta;publicbooleaninsereLinha(Stringendereco,Stringocorrencia){booleanverificaExistencia,sucesso=false;arquivo=newFile(endereco);// c:/conexãoLog.txtStringconteudo;booleanexiste=arquivo.exists();if(existe){conteudo=lelog(endereco);try{saida_baixa=newFileOutputStream(arquivo);saida_alta=newDataOutputStream(saida_baixa);//conteudo+="\n"+ocorrencia;saida_alta.writeBytes(conteudo+System.getProperty("line.separator")+ocorrencia);sucesso=true;}catch(FileNotFoundExceptionex){JOptionPane.showMessageDialog(null,"O arquivo de log foi apagado no meio da execução");}catch(IOExceptionex){JOptionPane.showMessageDialog(null,"Erro ao gravar o arquivo");}}else{try{ocorrencia="Arquivo de log de quedas do pingador"+System.getProperty("line.separator")+"formato:"+System.getProperty("line.separator")+"horario dia evento de <endereço em questão>"+System.getProperty("line.separator")+System.getProperty("line.separator")+ocorrencia;saida_baixa=newFileOutputStream(arquivo);saida_alta=newDataOutputStream(saida_baixa);saida_alta.writeBytes(ocorrencia);sucesso=true;}catch(FileNotFoundExceptionex){ex.printStackTrace();}catch(IOExceptionex){ex.printStackTrace();}}returnsucesso;}publicStringlelog(Stringendereco){try{fis=newFileInputStream(endereco);}catch(Exceptionex){//ex.printStackTrace();JOptionPane.showMessageDialog(null,"não foi possivel ler o arquivo "+endereco);}Stringtexto="";inttemp;chardata;try{do{temp=fis.read();data=(char)temp;if(temp!=-1)texto+=data;}while(temp!=-1);}catch(Exceptionex){}returntexto;}}