Ir ao conteúdo
  • Cadastre-se

Belmires

Membro Júnior
  • Posts

    9
  • Cadastrado em

  • Última visita

posts postados por Belmires

  1. Desenvolvi um pouco mais o código mas agora ele esta copiando linhas iguais. e tenho que compara primeiro o valor antes do "=" e se for diferente acrescenta ao arquivo se for igual faz a comparação com o valor depois do "=" se for igual não acrescenta se for diferente acrescenta no arquivo adicionado mais um comentário na linha para identificação depois do arquivo p

    pronto.

     

    package Unificar;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.Writer;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    /**
     * @author p808176
     *
     */
    public class Unificar {
    
    	public static void main(String[] args) throws IOException {
    		ProcurarArquivos e = new ProcurarArquivos();
    		// Nome dos arquivos a serem procurados
    		List<String> extensions = Arrays.asList(new String[] { "ApplicationResources.properties" });
    		Unificar prog = new Unificar();
    		// Caminho onde vai ser procurar
    		List<File> files = e.listFiles(new File("C:\\powerlogic\\workspaces\\workspace_producao"), extensions);
    		for (File f : files) {
    			if(!f.getAbsoluteFile().toString().contains("classes")){
    				BufferedReader arquivoFile = new BufferedReader(new FileReader(f));
    				prog.modifica(arquivoFile);
    				
    			// Ira printar os caminhos dos arquivos encontrados
    				System.out.println(f.getAbsolutePath());
    		}
    		}
    		System.out.println("Arquivo de unificação feito com sucesso");
    		try {
    			Unificar programa = new Unificar();
    			programa.executar();
    		} catch (Throwable t) {
    			t.printStackTrace();
    		}
    	}
    
    	private List<String> linhasCopiadas;
    
    	void executar() throws IOException {
    
    	}
    
    	private void ler(BufferedReader arquivoDestino) {
    		try {
    			String linha = "";
    			while ((linha = arquivoDestino.readLine()) != null) {
    				linhasCopiadas.add(linha);
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    
    		}
    	}
    
    
    	public void modifica(BufferedReader files) throws IOException {
    
    		File arquivoDestino = new File("C:\\Users\\p808176\\Desktop\\Teste.txt");
    		Writer destino = new BufferedWriter(new FileWriter(arquivoDestino, true));
    		linhasCopiadas = new ArrayList<>();
    		BufferedReader ler = new BufferedReader(new FileReader(arquivoDestino));
    
    
    		// Lendo o arquivo de Destino e acrescentar apenas valores diferentes
    		ler(ler);
    		String linha = null;
    		String[] chaveValor;
    		String newLine = System.getProperty("line.separator");
    		
    		while ((linha = files.readLine()) != null) {
    			chaveValor = linha.split("=");
    			
    			if (linhasCopiadas.contains(chaveValor[0])) { // Se a linha ainda não foi copiada pro arquivo de destino
    				destino.write(newLine+linha); // Copia a linha no arquivo de destino
    				linhasCopiadas.add(chaveValor[0]); // Joga a linha na lista de linhas copiadas
    			}
    
    		}
    		files.close();
    		destino.flush();
    		destino.close();
    	}
    
    }
              
    package Unificar;
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    
    public class ProcurarArquivos {
    
        public List<File> listFiles(File directory) {
            List<File> files = new ArrayList<File>();
            listFiles(files, directory);
            return files;
        }
    
        private void listFiles(List<File> files, File directory) {
            File[] filesAndSubdirectories = directory.listFiles();
            if (filesAndSubdirectories != null) {
                for (File file : filesAndSubdirectories) {
                    if (file.isDirectory()) {
                        listFiles(files, file);
                    } else {
                        files.add(file);
                    }
                }
            }
        }
    
        private boolean endsWith(File filename, List<String> extensions) {
            String name = filename.getName();
            for (String ext : extensions) {
                if (name.toLowerCase().endsWith(ext.toLowerCase()))
                    return true;
            }
            return false;
        }
    
        public List<File> listFiles(File directory, List<String> extensions) {
            List<File> files = new ArrayList<File>();
            listFiles(files, directory, extensions);
            return files;
        }
    
        private void listFiles(List<File> files, File directory, List<String> extensions) {
            File[] filesAndSubdirectories = directory.listFiles();
            if (filesAndSubdirectories != null) {
                for (File file : filesAndSubdirectories) {
                    if (file.isDirectory()) {
                        listFiles(files, file, extensions);
                    } else {
                        if (endsWith(file, extensions)) {
                            files.add(file);
                        }
                    }
                }
            }
        }
    
    }          

     

  2. Bom dia, como ficaria esse código com uma busca por aquivos com o mesmo nome, e a comparação dentro desses arquivos sendo feita apenas com a chave das linhas contidas nesses arquivos, como nesse exemplo que eu respondi por ultimo.

    Exemplo de informações que estão no arquivo 

    chave = valor 

    desenvolvi esse código, mas não esta lendo as informações que já estão no aquivo de destino e esta apagando e parece que esta esta copiando para o arquivo de destino apenas as linha que são diferentes entre todos arquivos

    package Ler;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    public class Unificar {
    
        public static void main(String[] args) throws IOException {
            ProcurarArquivos e = new ProcurarArquivos();
            // Aruivos a serem procurados
            List<String> extensions = Arrays.asList(new String[] { "ApplicationResources.properties" });
            Unificar prog = new Unificar();
            // Caminho onde vai ser procurar
            List<File> files = e.listFiles(new File("c:\\"), extensions);
            for (File f : files) {
                BufferedReader arquivoFile = new BufferedReader(new FileReader(f));
                prog.modifica(arquivoFile);
    //            System.out.println(f.getAbsolutePath());
    
            }
    
            try {
                Unificar programa = new Unificar();
                programa.executar();
            } catch (Throwable t) {
                t.printStackTrace();
            }
        }
    
        public List<File> listFiles(File directory) {
            List<File> files = new ArrayList<File>();
            listFiles(files, directory);
            return files;
        }
    
        private void listFiles(List<File> files, File directory) {
            File[] filesAndSubdirectories = directory.listFiles();
            if (filesAndSubdirectories != null) {
                for (File file : filesAndSubdirectories) {
                    if (file.isDirectory()) {
                        listFiles(files, file);
                    } else {
                        files.add(file);
                    }
                }
            }
        }
    
        private List<String> linhasCopiadas;
    
        private void executar() throws IOException {
    
        }
    
        // Função que compara as linhas para não se repetir
        private void copiar(BufferedReader origem, PrintWriter destino)
                throws IOException {
            String linha = null;
            String[] chaveValor;
            while ((linha = origem.readLine()) != null) {
                chaveValor = linha.split("=");
                // System.out.println(chaveValor[0]);
                // System.out.println(chaveValor[1]);
    
                if (!linhasCopiadas.contains(chaveValor[0])) { // Se a linha ainda não foi copiada pro arquivo de destino
                    destino.println(linha); // Copia a linha no arquivo de destino
                    linhasCopiadas.add(chaveValor[0]); // Joga a linha na lista de linhas copiadas
                }
            }
        }
    
        private void ler(BufferedReader arquivoDestino) {
            try {
                while (arquivoDestino.ready()) {
                    linhasCopiadas.add(arquivoDestino.readLine());
                }
            } catch (IOException e) {
                e.printStackTrace();
    
            }
        }
    
        private boolean endsWith(File filename, List<String> extensions) {
            String name = filename.getName();
            for (String ext : extensions) {
                if (name.toLowerCase().endsWith(ext.toLowerCase()))
                    return true;
            }
            return false;
        }
    
        public List<File> listFiles(File directory, List<String> extensions) {
            List<File> files = new ArrayList<File>();
            listFiles(files, directory, extensions);
            return files;
        }
    
        private void listFiles(List<File> files, File directory,
                List<String> extensions) {
            File[] filesAndSubdirectories = directory.listFiles();
            if (filesAndSubdirectories != null) {
                for (File file : filesAndSubdirectories) {
                    if (file.isDirectory()) {
                        listFiles(files, file, extensions);
                    } else {
                        if (endsWith(file, extensions)) {
                            files.add(file);
                        }
                    }
                }
            }
        }
    
        public void modifica(BufferedReader origem) throws IOException {
    
            File arquivoDestino = new File("C:\\Users\\p808176\\Desktop\\Teste.txt");
            PrintWriter destino = new PrintWriter(arquivoDestino);
            // PrintWriter arquivo = new PrintWriter(diretorio);
            linhasCopiadas = new ArrayList<>();
            BufferedReader ler = new BufferedReader(new FileReader(arquivoDestino));
            // BufferedReader origem = new BufferedReader(new
            // FileReader(diretorio));
    
            // Lendo o arquivo de
            ler(ler);
            String linha = null;
            String[] chaveValor;
            while ((linha = ler.readLine()) != null) {
                chaveValor = linha.split("=");
                if (!linhasCopiadas.contains(chaveValor[0])) { // Se a linha ainda não foi copiada pro arquivo de destino
                    destino.println(linha); // Copia a linha no arquivo de destino
                    linhasCopiadas.add(chaveValor[0]); // Joga a linha na lista de linhas copiadas
                }
            }
    
            copiar(origem, destino);
            origem.close();
    
            destino.flush();
            destino.close();
        }
    
    }

     

  3. O programa esta encontrando os aquivos mas não esta lendo o arquivo destino e inserindo o as linhas não contidas nele, peço ajuda. agradeço desde ja

     

    package Ler;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    public class Unificar  {
    
        public static void main(String[] args) {
          	ProcurarArquivos e = new ProcurarArquivos();
            // Exemplo :
            List<String> extensions = Arrays.asList(new String[] {
                "ApplicationResources.properties"
            });
            List<File> files = e.listFiles(new File("c:\\"), extensions);
            for (File f : files) {
                System.out.println(f.getAbsolutePath());
                
            }
        	
            try {
            	Unificar programa = new Unificar();
                programa.executar();
            } catch (Throwable t) {
                t.printStackTrace();
            }
        }
    
        public List<File> listFiles(File directory) {
            List<File> files = new ArrayList<File>();
            listFiles(files, directory);
            return files;
        }
    
        private void listFiles(List<File> files, File directory) {
            File[] filesAndSubdirectories = directory.listFiles();
            if (filesAndSubdirectories != null) {
                for (File file : filesAndSubdirectories) {
                    if (file.isDirectory()) {
                        listFiles(files, file);
                    } else {
                        files.add(file);
                    }
                }
            }
        }
        
        private List<String> linhasCopiadas;
    	private File f;
    
        private void executar() throws IOException {
        	
    		f = null;
    		// Pasta de origem 
            File diretorio = new File(f.getAbsolutePath()); 
            
            // Pasta do novo arquivo a ser criado
            File arquivoDestino = new File("C:\\Users\\p808176\\Desktop\\Teste.txt"); 
            PrintWriter destino = new PrintWriter(arquivoDestino);
    //        PrintWriter arquivo = new PrintWriter(diretorio);
            linhasCopiadas = new ArrayList<>();
            BufferedReader ler = new BufferedReader(new FileReader(arquivoDestino));
            BufferedReader origem = new BufferedReader(new FileReader(diretorio));
          
            
            
            
            // Lendo o arquivo de 
             ler(ler); 
        	  String linha = null;
              String[] chaveValor; 
              while ((linha = ler.readLine()) != null) {
              	chaveValor = linha.split("=");
              	 if (!linhasCopiadas.contains(chaveValor[0])) { // Se a linha ainda não foi copiada pro arquivo de destino
                     destino.println(linha); // Copia a linha no arquivo de destino
                     linhasCopiadas.add(chaveValor[0]); // Joga a linha na lista de linhas copiadas
                 }
              }
          
            
            for (File arquivo : diretorio.listFiles()) {
                copiar(origem, destino);
                origem.close();
            }
            destino.flush();
            destino.close();
        }
        
    
    //    		Função que compara as linhas para não se repetir
        private void copiar(BufferedReader origem, PrintWriter destino) throws IOException {
            String linha = null;
            String[] chaveValor; 
            while ((linha = origem.readLine()) != null) {
            	chaveValor = linha.split("=");
    //        	System.out.println(chaveValor[0]);
    //        	System.out.println(chaveValor[1]);
            
                if (!linhasCopiadas.contains(chaveValor[0])) { // Se a linha ainda não foi copiada pro arquivo de destino
                    destino.println(linha); // Copia a linha no arquivo de destino
                    linhasCopiadas.add(chaveValor[0]); // Joga a linha na lista de linhas copiadas
                }
            }
        }
     
      private void ler (BufferedReader arquivoDestino){
    	try {
    		while (arquivoDestino.ready()){
    			linhasCopiadas.add(arquivoDestino.readLine());
    		}
    	} catch (IOException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    
    	}
      }
      private boolean endsWith(File filename, List<String> extensions) {
          String name = filename.getName();
          for (String ext : extensions) {
              if (name.toLowerCase().endsWith(ext.toLowerCase()))
                  return true;
          }
          return false;
      }
    
      public List<File> listFiles(File directory, List<String> extensions) {
          List<File> files = new ArrayList<File>();
          listFiles(files, directory, extensions);
          return files;
      }
    
      private void listFiles(List<File> files, File directory, List<String> extensions) {
          File[] filesAndSubdirectories = directory.listFiles();
          if (filesAndSubdirectories != null) {
              for (File file : filesAndSubdirectories) {
                  if (file.isDirectory()) {
                      listFiles(files, file, extensions);
                  } else {
                      if (endsWith(file, extensions)) {
                          files.add(file);
                      }
                  }
              }
          }
      }
      
      
      
    }

     

  4. Meu problema e um pouco mais complicado. olha se da para você entender.

     

    Estou querendo fazer a comparação antes “=” usando o split, para inserir a linha toda caso o valor da chave não seja igual, e fazer uma varredura no arquivo destino para comparar as linhas já contidas no arquivo e inserir apenas linhas novas. Estou pedindo demais, mas que sou nova na programação, agradeço desde já.

    package Ler;

     

    package Ler;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Unificar {
    
        public static void main(String[] args) {
            try {
                Unificar programa = new Unificar();
                programa.executar();
            } catch (Throwable t) {
                t.printStackTrace();
            }
        }
    
        private List < String > linhasCopiadas;
    
        private void executar() throws IOException {
    
            // Pasta de origem 
            File diretorio = new File("C:\\Arq");
    
            // Pasta do novo arquivo a ser criado
            File arquivoDestino = new File("C:\\Users\\p808176\\Desktop\\Teste.txt");
            PrintWriter destino = new PrintWriter(arquivoDestino);
            linhasCopiadas = new ArrayList < > ();
    
            BufferedReader ler = new BufferedReader(new FileReader(arquivoDestino));
            ler(BufferedReader origem) {
                String linha = null;
    
                while ((linha = origem.readLine()) != null) {
                    chaveValor = linha.split("=");
                }
            }
    
    
            for (File arquivo: diretorio.listFiles()) {
                BufferedReader origem = new BufferedReader(new FileReader(arquivo));
                copiar(origem, destino);
                origem.close();
            }
            destino.flush();
            destino.close();
        }
        //          Função que compara as linhas para não se repetir
        private void copiar(BufferedReader origem, PrintWriter destino) throws IOException {
            String linha = null;
            String[] chaveValor;
            while ((linha = origem.readLine()) != null) {
                chaveValor = linha.split("=");
                //          System.out.println(chaveValor[0]);
                //          System.out.println(chaveValor[1]);
    
                if (!linhasCopiadas.contains(chaveValor[0])) { // Se a linha ainda não foi copiada pro arquivo de destino
                    destino.println(linha); // Copia a linha no arquivo de destino
                    linhasCopiadas.add(chaveValor[0]); // Joga a linha na lista de linhas copiadas
                }
            }
        }
    
        private void ler(BufferedReader destino) {
            try {
                while (destino.ready()) {
                    linhasCopiadas.add(destino.readLine());
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
    
            }
        }
    }

     

  5. Ele esta colocando as informações do próximo arquivo na frente do outro. Eu fiz esse codigo, mas agarrei fazendo uma função para ler o arquivo primeiro e comparar as linhas já contidas no arquivo antes de inserir, mas agarrei aqui e estou com duvida. Poderia me ajudar a proceder

     

    
    package Unificar;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Unificar {
    
        public static void main(String[] args) {
            try {
                Unificar programa = new Unificar();
                programa.executar();
            } catch (Throwable t) {
                t.printStackTrace();
            }
        }
    
        private List<String> linhasCopiadas;
    
        private void executar() throws IOException {
            File diretorio = new File("C:\\Arq"); // Pasta de origem 
            File arquivoDestino = new File("C:\\Users\\Belmires\\Desktop\\Teste.txt"); // Pasta do novo arquivo criado
            PrintWriter destino = new PrintWriter(arquivoDestino);
            linhasCopiadas = new ArrayList<>();
            BufferedReader ler = new BufferedReader(new FileReader(arquivoDestino));
            ler(){
                
            
            }
            
            for (File arquivo : diretorio.listFiles()) {
                BufferedReader origem = new BufferedReader(new FileReader(arquivo));
                copiar(origem, destino);
                origem.close();
            }
            destino.flush();
            destino.close();
        }
    //            Função que compara as linhas
        private void copiar(BufferedReader origem, PrintWriter destino) throws IOException {
            String linha = null;
            while ((linha = origem.readLine()) != null) {
                if (!linhasCopiadas.contains(linha)) { // Se a linha ainda não foi copiada pro arquivo de destino
                    destino.println(linha); // Copia a linha no arquivo de destino
                    linhasCopiadas.add(linha); // Joga a linha na lista de linhas copiadas
                }
            }
        }
        
        private void ler (BufferedReader destino){
            try {
                while (destino.ready()){
                    linhasCopiadas.add(destino.readLine());
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
    }

     

  6. package Ler;
    
    import java.io.BufferedReader;  
    import java.io.File;  
    import java.io.FileNotFoundException;  
    import java.io.FileOutputStream;  
    import java.io.FileReader;  
    import java.io.IOException;  
      
    public class Teste7 {  
        public static void main(String[] args) {       
    //    	System.out.println(File);
            File diretorio = new File("C:\\Arq");
    
            File arquivo = null;       
            File[] arquivos = null;       
            FileReader fr = null;       
            BufferedReader br = null;       
                   
            String linha = "";       
            File arquivoDestino = new File("C:\\Arq\\new 1.txt");       
            FileOutputStream fos = null;       
            try {       
               if (diretorio.isDirectory()) {       
                    arquivos = diretorio.listFiles(); 
                    fos = new FileOutputStream(arquivoDestino);
                    for (int i = 0; i < arquivos.length; i++) {       
                        arquivo = arquivos[i];    
                          
                         fr = new FileReader(arquivo);       
                         br = new BufferedReader(fr);     
                         fos = new FileOutputStream(arquivoDestino);       
                         while ((linha = br.readLine()) != null) {       
                            fos.write(linha.getBytes());       
                        }  
                         fos.write("\n".getBytes()); 
                   }       
                }       
                   
                fos.flush();       
                fos.close();       
            } catch (FileNotFoundException fnex) {       
                fnex.printStackTrace();       
            } catch (IOException ioex) {       
                ioex.printStackTrace();       
            }     
        }  
      
    }  

     

  7. @r_Tray Obrigado pela ajuda. Deu certo

     

    #include<stdio.h>
    #include<stdlib.h>
    #include <conio.h>
    #include <locale.h>
    // Calculadora por função que nao aceita dividir por 0
    // Autor : Belmires Frances de Almeida

    // Funções 
    int soma(int n1, int n2);
    int sub(int n1,int n2);
    int mult(int n1,int n2);
    int divi(int n1,int n2);
    int resul;

    // Programa 
    int main(){
        char r = 's';
           while (r == 's') {
        setlocale(LC_ALL, "Portuguese");
        int numa, numb;
        printf("Calculadora com a principais funções básicas\n");
        printf("\nEntre com o primeiro número = ");
        scanf("%d",&numa);
        printf("\nEntre com o segundo número = ");
        scanf("%d",&numb);
        printf("\n---------------Resultado--------------");
        printf("\nSoma = %d\n",soma(numa,numb));
        printf("Subtração = %d\n",sub(numa,numb));
        printf("Multiplicação = %d\n",mult(numa,numb));
        printf("Divisão = %d\n",divi(numa,numb));
        printf("\nVocê deseja fazer outra operação ? [s/n]"); 
        scanf(" %c", &r); 
          }
        return 0;

    }

    // Definindo o que as funções vão fazer
    int soma(int n1, int n2){
        int resul;
        resul = n1 + n2;
        return (resul);
    }
    int sub(int n1, int n2){
        int resul;
        resul = n1 - n2;
        return (resul);
    }
    int mult(int n1, int n2){
        int resul;
        resul = n1 * n2;
        return (resul);
    }
    int divi(int n1, int n2){
    int resul;
    if (n1 == 0 || n2 == 0)
        printf ("Impossível dividir por zero");
    else
        resul = n1/n2;
    return (resul);

    }

    Para ajudar quem precisar

  8. Boa noite, podem me ajudar por favor. Estou tentando fazer uma calculadora em função mas não estou conseguindo fazer que o if da divisão funcione. O código esta ai desde já agradeço.

     

    #include<stdio.h>
    #include<stdlib.h>
    #include <conio.h>
    // Função
    int soma(int n1, int n2);
    int sub(int n1,int n2);
    int mult(int n1,int n2);
    int divi(int n1,int n2);
    int resul;
    main(){
        int numa, numb;
        printf("Entre com dois numeros\n");
        scanf("%d",&numa);
        scanf("%d",&numb);
        printf("Soma = %d\n",soma(numa,numb));
        printf("Subtracao = %d\n",sub(numa,numb));
        printf("Multiplicacao = %d\n",mult(numa,numb));
        printf("Divisao = %d\n",divi(numa,numb));
        system("pause");
        
    }
    int soma(int n1, int n2){
        int resul;
        resul = n1 + n2;
        return (resul);
    }
    int sub(int n1, int n2){
        int resul;
        resul = n1 - n2;
        return (resul);
    }
    int mult(int n1, int n2){
        int resul;
        resul = n1 * n2;
        return (resul);
    }
    int divi(int n1, int n2){
    int resul;
    if (n1==0 && n2==0)
        printf ("Nao é possivel dividir por zero!!!");

    else
        resul = n1/n2;
    return (resul);

    }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!