Leitura de Arquivo TXT

Nicolas,

Se eu fizer a saida assim:

    PrintWriter bw = new PrintWriter(new File("out.txt"));       
           for(Colunas_Arquivo dados: col){     
                 bw.println(dados.toString());     
	                  
           }   

Ele funciona, porém a criação do arquivo ficou em loop e gerou um arquivo monstruoso tudo com valor NULL.

Se eu colocar da maneira que você disse:


PrintWriter bw = new PrintWriter(new File("out.txt"));       
       for(Colunas_Arquivo col: dados){     
             bw.println(col.toString()); 
       }   

Ele dá erro, pois diz que a variável col esta duplicada e não permite fazer assim…

No meu método toString eu fiz desta maneira:

@Override
          public String toString() {
          return Sigla_Sistema + " " + Nome_Job + " " + Num_ID_Job + " " + Hr_Inicial + " " + Ocorrencias + " " + Odate_Processamento + " "
	                         + Data_Processamento;
	}

Isso tá certo ??

[quote=brunosardao]Nicolas,

Se eu fizer a saida assim:

    PrintWriter bw = new PrintWriter(new File("out.txt"));       
           for(Colunas_Arquivo dados: col){     
                 bw.println(dados.toString());     
	                  
           }   

Ele funciona, porém a criação do arquivo ficou em loop e gerou um arquivo monstruoso tudo com valor NULL.

Se eu colocar da maneira que você disse:


PrintWriter bw = new PrintWriter(new File("out.txt"));       
       for(Colunas_Arquivo col: dados){     
             bw.println(col.toString()); 
       }   

Ele dá erro, pois diz que a variável col esta duplicada e não permite fazer assim…
[/quote]

Bom, deixa do seu jeito então, já que eu não sei quais as variáveis que você tá usando no código.
Tá, ele tá printando NULL… A variável col do seu foreach é a coleção, certo? Você viu se ela tá preenchida com valores?

Sim, e a col.

Imprimi ela na tela e realmente tá voltando NULL…

As posições devem estar foras de ordem…vou rever aqui rapidamente e já posto para você saber…

Nicolas,

Existe algum outro problema que pode estar afetando a não inclusão de dados na list ? pois só tá voltando valor NULL…

Minhas classes estão assim:

CLASSE ARQUIVO

public class Arquivo {

	// Atributos
	
	public String Sigla_Sistema;
	public String Nome_Job;
	public String Num_ID_Job;
	public String Hr_Inicial;
	public String Odate_Processamento;
	public String Data_Processamento;
	public String Ocorrencias;
	

	
	public String getSigla_Sistema() {
		return Sigla_Sistema;
	}
	public void setSigla_Sistema(String sigla_Sistema) {
		Sigla_Sistema = sigla_Sistema;
	}
	public String getNome_Job() {
		return Nome_Job;
	}
	public void setNome_Job(String nome_Job) {
		Nome_Job = nome_Job;
	}
	public String getNum_ID_Job() {
		return Num_ID_Job;
	}
	public void setNum_ID_Job(String num_ID_Job) {
		Num_ID_Job = num_ID_Job;
	}
	public String getHr_Inicial() {
		return Hr_Inicial;
	}
	public void setHr_Inicial(String hr_Inicial) {
		Hr_Inicial = hr_Inicial;
	}
	public String getOdate_Processamento() {
		return Odate_Processamento;
	}
	public void setOdate_Processamento(String odate_Processamento) {
		Odate_Processamento = odate_Processamento;
	}
	public String getData_Processamento() {
		return Data_Processamento;
	}
	public void setData_Processamento(String data_Processamento) {
		Data_Processamento = data_Processamento;
	}
	public String getOcorrencias() {
		return Ocorrencias;
	}
	public void setOcorrencias(String ocorrencias) {
		Ocorrencias = ocorrencias;
	}
	
	@Override
	public String toString() {
		return Sigla_Sistema + " " + Nome_Job + " " + Num_ID_Job + " " + Hr_Inicial + " " + Ocorrencias + " " + Odate_Processamento + " "
				+ Data_Processamento;
	}
	

MEU CODIGO

public String
	caminho = "C:/LOG/HG/";
	
	 public void ordenarArquivo(){
		 
	 try{
		 
		  // PROCESSO DE LEITURA DAS LOGs
 		File [] arquivos;
 		File dir = new File(caminho);
 		
 		arquivos = dir.listFiles();
                     
	   for (int i = 0; i < arquivos.length; i++){
		 
		
		//  LEITURA DOS ARQUIVOS.
	    FileInputStream fis      = new FileInputStream(arquivos[i]);
	   	InputStreamReader stream = new InputStreamReader(fis);
	   	BufferedReader buff      = new BufferedReader(stream);  
		

	   	String linha = null;
		
		List<Arquivo> col = new ArrayList<Arquivo>();
	   	
		while((linha  = buff.readLine())!= null) {   

		    String lineArq = buff.readLine();           // LE O ARQUIVO LINHA A LINHA   
		    String [] dadosArq = lineArq.split(" "); // SEPARA O ARQUIVO EM COLUNAS   
		  
		    Arquivo dados = new Arquivo();   
		    Boolean podeProcessar = false;   
		  
		   // System.out.println(retornaListaNumerada(dadosArq));
		    
		    if(dadosArq.length == 19){
		           
		        for (String dado : dadosArq) {   
		  
		            if(dado.toUpperCase().contains("ABENDED") || dado.toUpperCase().contains("FAILED") ||   
		               dado.toUpperCase().contains("UNEXPLA") ||  dado.toUpperCase().contains("NOT CATLGD"))             
		                   podeProcessar = true;   
		     
		            }   
		  
		        if (podeProcessar) {   
		  
		            if (dadosArq[13].length() == 8 && dadosArq[4].equals("020811")) {   
		  
		            	dados.setSigla_Sistema(dadosArq[13].substring(0,2));
		            	dados.setNome_Job(dadosArq[13].substring(0,8));
		            	dados.setNum_ID_Job(dadosArq[13].split("/")[1]);
		            	dados.setHr_Inicial(dadosArq[3]);
		            	dados.setOdate_Processamento(dadosArq[4]);
		                dados.setData_Processamento(dadosArq[2]);
		            	
		                
		             for (String dado : dadosArq) {   
		            		  
			              if(dado.toUpperCase().contains("ABENDED")) {   
			                 dados.setOcorrencias(dadosArq[15] + " " + dadosArq[16] + " " + dadosArq[17]);     
			              }   
			              else if (dado.toUpperCase().contains("FAILED")) {   
			                       dados.setOcorrencias(dadosArq[15] + " " + dadosArq[16] + " " + dadosArq[17]);   
  			              }
			              else if (dado.toUpperCase().contains("UNEXPLA")) {   
		                           dados.setOcorrencias(dadosArq[16] + " " + dadosArq[18]);   
 		                  }   
			              else if (dado.toUpperCase().contains("NOT CATLGD 2")) {   
		                           dados.setOcorrencias(dadosArq[15] + " " + dadosArq[16] + " " + dadosArq[17] + " " + dadosArq[18] + " " + dadosArq[19]);   
		                  }   
			                    
			          }
                   }     
		        }     
		     }    

	   	                  // ADICIONA NA LIST OS DADOS       	
		    			     col.add(dados);

		    				    			     
		    }//WHILE
		
				System.out.println(col.toString());
		   }//FOR
	   	
	   				
	   
	   
//		PrintWriter bw = new PrintWriter(new File("out.txt"));       
        
	//       for(Arquivo dados: col){     
	   //        bw.println(dados.toString());     
	                
	                

		  	  
	 }catch(FileNotFoundException x){
		x.printStackTrace();
	 }catch(IOException y){
		y.printStackTrace();
	}
  } 

Conferi novamente as posições dos dados e estão todas realmente nas posições que coloquei.

vlw…