Caracter Especial - Quebra de Linha (arquivo txt)

Pessoal bom dia!

Já pesquisei e não encontrei uma solução para a quebra de linha com o caracter especial…

Ao abrir o arquivo txt no bloco de notas, fica um quadradinho no final da linha que eu preciso (caracter de quebra de linha)

Estou usando BufferedReader e quando chega nesta linha ele armazena BRANCO na string devido este carcater de quebra.

Como eu posso validar este caracterer?

Obrigado a todos…

Att,
Alexandre Pestana

Você está lendo as linhas do arquivo via BufferedReader.readLine()? Um dos objetivos do BufferedReader é justamente processar quebras de linha, então o ideal é que você mesmo processe as quebras de linha interpretando os caracteres lidos. Assim, em vez de usar readLine(), você teria de usar read().

Ja resolveu? posta ai o codigo com problema

Obrigado.

Ola roger…

Legal, nunca pensei em usar o read(), só que olhei aki o read só recebe o valor como inteiro…
legal é tipo charcode? como eu faço para converter para texto depois?

obrigado por enquanto…

[quote=kemperacc]Ja resolveu? posta ai o codigo com problema

Obrigado.[/quote]

Amigo, só não se assuste com o código, pois o objetivo deste programa é ficar lendo o arquivo de LOG o tempo todo…
Se ele encontrar determinadas palavras conforme os IF’s abaixo, ele armena no banco de dados…

Segue o código…



package packNFeLog;

import java.util.Date;
import java.util.Scanner;
import java.util.Vector;
import java.io.*;
import java.text.SimpleDateFormat;
import java.sql.*;

/**
 * Programa com finalidade de analisar os LOG's do integrador e alimentar o arquivo NFEA01F
 * @author alexandre.pestana
 *
 */
public class NFeLog{

	BufferedReader br;
	String linha = "";
	String comparar = "";
	public String NameFile = "";
	
	String chave = "";
	String exception = "";
	String erro = "";
	String status = "";
	
	public String driver400 	= "";
	public String url400 		= "";
	public String user400 		= "";
	public String pass400		= "";
	
	boolean erro_detect = false;
	
	Vector map_url 	= new Vector();
	Vector map_unid = new Vector();
	Vector map_user = new Vector();
	Vector map_pass = new Vector();
	
	public String diretorio	= "";
	
	Connection con;
	ResultSet rs;
	Statement st;
	
	
	public NFeLog(Vector map_url_2,
			 	  Vector map_unid_2,
			 	  Vector map_user_2,
			 	  Vector map_pass_2,
			 	  String driver400_2,
			 	  String url400_2,
			 	  String user400_2,
			 	  String pass400_2,
			 	  String diretorio_2) throws FileNotFoundException{
		
		//adicionando valores para classe mãe
		driver400 		= driver400_2;
		url400 			= url400_2;
		user400 		= user400_2;
		pass400			= pass400_2;
		map_url			= map_url_2;
		map_unid		= map_unid_2;
		map_user		= map_user_2;
		map_pass		= map_pass_2;
		diretorio		= diretorio_2;
		
		//MAPEANDO DIRETORIOS
		int m = map_url.size();			
		for(int x=0; x < m ;x++){
			String mapurl  = (String) map_url.elementAt(x);
			String mapunid = (String) map_unid.elementAt(x);
			String mapuser = (String) map_user.elementAt(x);
			String mappass = (String) map_pass.elementAt(x);
			
			MapUnidRed(mapurl,mapunid,mapuser,mappass);
		}    		
		
			
		
		//Iniciando Excecução
		run();
	}

	public void run(){
	       while (true) {
	    	   
	    	try{ 
	        
	    		   		
	    		
		    	//Verifica se o nome ainda é mesmo com a Data ATUAL
		        	getDate();	        		
	        		
		        	//Efetua a leitura continua nas linhas.
		        	if(br.readLine() != null){
		        		linha = br.readLine();	      
		        	}else{
		        		linha = null;
		        	}
		        	
		        	
	        	   
	        	   if (linha != null){
	        		   
	        		   //===========I D NF =============
	        		   int pid = linha.indexOf("Id........:");
	        		   if(pid > -1 ){
	        			   chave = linha.substring(pid+11,linha.length()).trim();        			  
	        			   erro_detect = false; //IDENTIFICOU OUTRA NOTA
	        		   }
	        		   
	        		   	        		   
	        		   //====== PROCURANDO POR ERRO ==========
	        		   int perro = linha.indexOf("ERROR:");
	        		   if(perro > -1){
	        			   erro_detect = true;
	        		   }
	        		   
	        		   
	        		   /**
	        		    * SE ENCONTROU ALGUM ERRO ===========
	        		    */
	        		   
	        		   if(erro_detect){
	        			   int t = linha.length();
	        			   linha = linha.substring(0,t-2);
	        			   //STATUS E ERRO DA NOTA FÍSCAL
	        			   int psts = linha.indexOf("Status:");
		        		   if(psts > -1 ){
		        			   status = linha.substring(psts+7,linha.length()).trim();
		        			   erro = status.substring(6,status.length()).trim();
		        			   
		        			   //Não pode ultrapassar 120 pos.
		        			   if(erro.length() > 120){
		        				   erro = erro.substring(0,120);
		        			   }
		        			   status = status.substring(0,3);
		        		   }
		        		     
	        			  
		        		   
	        		   }
	        			   
	        		   //ERRO INTERNAL EXCEPTION
	        		   int piex = linha.indexOf("Internal Exception:");
	        		  // System.out.println(linha);
	        		   if(piex > -1){
	        			   	  exception = linha.substring(piex+19,linha.length()).trim();
		        			  
		        			  //ELIMINAR TEXTO JAVA.SQL.... (ECONOMIZAR ESPAÇO)
		        			  int filtroINI = exception.indexOf("java.");
		        			  int filtroFIM	= exception.indexOf("Exception:");
		        			  if(filtroINI > -1){
		        				  String remover = exception.substring(filtroINI,filtroFIM+10);
		        				  exception = exception.replace(remover, "").trim();
		        			  }
		        			  if(exception.length() > 120){
		        				  exception = exception.substring(0,120);
		        			  }
	        			}
	        		   	        		   	       		   
	        		 //Atualizar NFEA01F - BPCS
	        		   if((erro != "") || (exception != "")){
	        			//  UpdateBPCS(chave,status,erro,exception);
	        		   }
	        		   
	        		   //LIMPANDO VARIAVEIS
	        		   erro = "";
	        		   exception = "";
  
	        	   }else{
	        		  Thread.sleep(1000);	
	        	   }
	        	   
	           }catch(Exception e){
	        	   try{Thread.sleep(1000);}catch(Exception es){}
	          }
	           
	       }
	}

	private void UpdateBPCS(String chave2, String status2, String erro2, String exception2) {
		
		try{
			Class.forName(driver400);
			con = DriverManager.getConnection(url400,user400,pass400);
			st = con.createStatement();
			
			String sql = "SELECT A01TIP FROM GATESF.NFEA01F WHERE A01KEY='"+chave2+"'";
			rs = st.executeQuery(sql);
			if(rs.next()){
				String A01TIP = (rs.getString("A01TIP")).trim();
				
				if(!A01TIP.equals("S")){
				
					//Prevalece o erro de Exception, se existir...
					if(exception2 != "") erro2 = exception2;
					
					//Data e Hora do Sistema
					Date dataFinal = new Date(); 
					SimpleDateFormat datahj = new SimpleDateFormat("yyyyMMdd") ;
					String ydata = datahj.format(dataFinal);
					SimpleDateFormat horahj = new SimpleDateFormat("HHmmss"); 
					String yhora = horahj.format(dataFinal); 
					
					String sql2 = "UPDATE GATESF.NFEA01F SET A01STA="+status2+", A01DSC='"+erro2+"',A01DAT="+ydata+",A01TIP='I', A01HOR="+yhora+" WHERE A01KEY='"+chave2+"'";
					st.executeUpdate(sql2);
				}
			
			}
			
			con.close();
			
			
		}catch(SQLException se ){
			System.out.println(se);
		}catch(Exception e){
			System.out.println(e);
		}
		
	}

	/*
	 * Método que verifica se o nome do arquivo ainda é o mesmo.
	 */
	private boolean getDate() {		
		if(!NameFile.equals(getFile())){
			try{
				//Armazendo nome do arquivo.
				NameFile = getFile(); 
				
				File dir = new File(diretorio);
				if(dir.isDirectory()){
					File arquivo = new File(diretorio+"/"+getFile());
					
					//Limpando Buffer
					br = null;
					br = new BufferedReader(new FileReader(arquivo));
				}else{
					System.out.println("Diretorio nao localizado! ("+diretorio+")");
					System.exit(0);
				}
				
			}catch(Exception e){
				System.out.println(e);
			}
		}
		return true;
	
	}
	
	
	/*
	 * Método que gera o nome do arquivo.
	 */
	public static String getFile(){
		Date dataFinal = new Date(); 
		SimpleDateFormat datahj = new SimpleDateFormat("yyyy-MM-dd") ;
		String ydata = datahj.format(dataFinal);
		
		return "IntegracaoTXT."+ydata+".log";
			
	}

Roger, não funcionou…

Olha o conteudo do arquivo txt:

Internal Exception: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: não é possível inserir NULL em (“NFE”.“NFE_NF_ITEM”.“DM_TRIB_ICMS”)

Imagine que no final desta linha, tem um quadradinho que é quebra de linha.

ao utilizar o read() ao invés do readLine ele imprime como saída: -1
é -1 é como se não existisse caracteres…

1 curtida

O método read() retorna -1 quando você já tiver lido TODOS os bytes contidos no arquivo. Então, é possível que você já tenha lido o caractere de interesse num momento anterior.