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):
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:
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JOptionPane;
public class Log {
public Log() {
String endereco=JOptionPane.showInputDialog("digite o endereço a inserir como queda: ");
String ocorrencia=JOptionPane.showInputDialog("digite ocorrencia a ser inserida: ");
// String saida=lelog(endereco);
insereQueda(endereco, ocorrencia);
// JOptionPane.showMessageDialog(null, saida);
}
public static void main(String args[]){
Log l=new Log();
}
FileInputStream fis;
//File arquivo;
PrintWriter pw;// = new PrintWriter (new FileWriter ("blog.txt"));
public boolean insereQueda(String endereco, String ocorrencia){
boolean sucesso=false;
try {
pw=new PrintWriter (new FileWriter (endereco));
} catch (IOException ex) {
ex.printStackTrace();
}
try {
JOptionPane.showMessageDialog(null, "arquivo = "+endereco+" e ocorrencia = "+ocorrencia);
pw.println(ocorrencia);
//conteudo+="\n"+ocorrencia;
sucesso=true;
return sucesso;
}catch(Exception e) {
return false;
}
}
}
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.swing.JOptionPane;
public class Log {
public Log() {
String endereco=JOptionPane.showInputDialog("digite o endereço a inserir como queda: ");
String ocorrencia=JOptionPane.showInputDialog("digite ocorrencia a ser inserida: ");
// String saida=lelog(endereco);
insereQueda(endereco, ocorrencia);
// JOptionPane.showMessageDialog(null, saida);
}
public static void main(String args[]){
Log l=new Log();
}
FileInputStream fis;
File arquivo;
OutputStream saida_baixa;
DataOutputStream saida_alta;
public boolean insereQueda(String endereco, String ocorrencia){
boolean verificaExistencia, sucesso=false;
arquivo=new File(endereco);// c:/conexãoLog.txt
String conteudo;
boolean existe=arquivo.exists();
if (existe){
conteudo=lelog(endereco);
try {
saida_baixa=new FileOutputStream(arquivo);
saida_alta=new DataOutputStream(saida_baixa);
//conteudo+="\n"+ocorrencia;
saida_alta.writeUTF(conteudo+"\n"+ocorrencia);
sucesso=true;
} catch (FileNotFoundException ex) {
JOptionPane.showMessageDialog(null, "O arquivo de log foi apagado no meio da execução");
}catch (IOException ex) {
JOptionPane.showMessageDialog(null, "Erro ao gravar o arquivo");
}
}else{
try {
saida_baixa=new FileOutputStream(arquivo);
saida_alta=new DataOutputStream(saida_baixa);
saida_alta.writeBytes(ocorrencia);
sucesso=true;
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
return sucesso;
}
public String lelog(String endereco){
try {
fis=new FileInputStream(endereco);
} catch (Exception ex) {
//ex.printStackTrace();
JOptionPane.showMessageDialog(null, "não foi possivel ler o arquivo "+endereco);
}
String texto="";
int temp;
char data;
try {
do{
temp=fis.read();
data = (char) temp;
if (temp != -1)
texto+=data;
}while(temp != -1);
} catch (Exception ex) {
}
return texto;
}
}
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…
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.
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:
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.swing.JOptionPane;
public class Log {
public Log(String endereco, String ocorrencia) {
// String saida=lelog(endereco);
insereLinha(endereco, ocorrencia);
// JOptionPane.showMessageDialog(null, saida);
}
public static void main(String args[]){
String endereco=JOptionPane.showInputDialog("digite o endereço a inserir como queda: ");
String ocorrencia=JOptionPane.showInputDialog("digite ocorrencia a ser inserida: ");
Log l=new Log(endereco, ocorrencia);
}
FileInputStream fis;
File arquivo;
OutputStream saida_baixa;
DataOutputStream saida_alta;
public boolean insereLinha(String endereco, String ocorrencia){
boolean verificaExistencia, sucesso=false;
arquivo=new File(endereco);// c:/conexãoLog.txt
String conteudo;
boolean existe=arquivo.exists();
if (existe){
conteudo=lelog(endereco);
try {
saida_baixa=new FileOutputStream(arquivo);
saida_alta=new DataOutputStream(saida_baixa);
//conteudo+="\n"+ocorrencia;
saida_alta.writeBytes(conteudo+System.getProperty ("line.separator")+ocorrencia);
sucesso=true;
} catch (FileNotFoundException ex) {
JOptionPane.showMessageDialog(null, "O arquivo de log foi apagado no meio da execução");
}catch (IOException ex) {
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=new FileOutputStream(arquivo);
saida_alta=new DataOutputStream(saida_baixa);
saida_alta.writeBytes(ocorrencia);
sucesso=true;
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
return sucesso;
}
public String lelog(String endereco){
try {
fis=new FileInputStream(endereco);
} catch (Exception ex) {
//ex.printStackTrace();
JOptionPane.showMessageDialog(null, "não foi possivel ler o arquivo "+endereco);
}
String texto="";
int temp;
char data;
try {
do{
temp=fis.read();
data = (char) temp;
if (temp != -1)
texto+=data;
}while(temp != -1);
} catch (Exception ex) {
}
return texto;
}
}