Pular linha no txt

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.

Use: System.getProperty (“line.separator”), ou o que é mais fácil, println ou printf ("%n"). Exemplo:

PrintWriter pw = new PrintWriter (new FileWriter ("blog.txt"));
fw.println ("abc");
fw.print ("abd" + System.getProperty ("line.separator"));
fw.printf ("abe%n"); 

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;
        }
    }
    
}

editei pra coloca as tag code…

ln não…writeln…

o meu codigo usando o datainputstream fico assim:


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…

mais alguem ai pode me ajudar?? eu realmente não sei onde foi q eu errei…

eu fico mto grato…

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.

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:


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;
    }
}