Ir ao conteúdo
  • Cadastre-se

Belmires

Membro Júnior
  • Posts

    10
  • Cadastrado em

  • Última visita

Reputação

1
  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. <CODE> Boa noite, Sou inciante na programação e estou precisando de ajuda já inicie o trabalho mas tem que inserir varias funções. o trabalho esta pedindo para criar um software para auxilio em uma biblioteca e devera conter um menu com a seguintes opções. [T] Cria nova lista encadeada. Insere livro/registro na lista. [E]. Edita registro/livro da lista. [C] Apresenta a lista de livros/registros. [L] Libera um livro/registro. [R] Retira um livro/registro da lista [X] Encerra a execução do programa Entre com sua opção: Cada registro de um livro deve identificar seu titulo, seu autor, seu registro, a editora e a data de sua publicação. as funções mínimas exigidas são: cria lista nova, insere livro mantendo ordem crescente pelo nome da obra, retira um livro da lista, apresenta toda a lista na tela, realiza manutenção de um registro na lista, libera área alocada da memöria, aloca ärea para um registro, e elimina lista. a função que insere um novo livro deve manter a lista ordenada pelo NOME DA OBRA. Se a obra já estiver presente na lista o usuário deve ser avisado e o livro não deve ser inserido. Além da inserção da obra, o programa deverá possuir funções para a eliminação (DELEÇÃO) de um livro já cadastrado na lista encadeada mantendo a lista ordenada. Também deve permitir a alteração dos dados de um livro (EDIÇÃO/ALTERAÇÃO) já inserido. Esta indo dessa forma . #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <conio.h> #include <locale.h> #define MAX 21 // Programa baseado em exemplo PITAGORAS de manipulaçÕ DE pilha // PROTOTIPOS void add_livros(); void ctr_livros(); void remove_livros(); void listar_livros(); //ESTRUTURA GLOBAL typedef struct Acervo{ char regs[MAX]; struct Acervo *prox; }; //VARIÁVEIS GLOBAIS char regs[MAX]; Acervo *topo;//ponteiro para o topo da pilha //Código PRINCIPAL int main(){ setlocale(LC_ALL, "Portuguese"); char op; topo = NULL;//incializando a pilha como vazia do{ system("cls"); printf ("\t\t\tArcevo da Biblioteca"); printf ("\n\n Insere livro/registro na lista.\n"); printf ("[A] Apresenta a lista de livros/registros.\n"); printf ("[R] Retira um livro/registro da lista \n"); printf ("[X] Encerra a execução do programa\n\n"); printf ("Digite a opcao: "); op = toupper(getche()); // Passa letra para maíuscula switch(op){ case'I': add_livros(); break; case'A': listar_livros(); break; case'R': remove_livros(); break; case'X': exit(0); default: printf ("\n\nOpcao invalida, digite novamente.\n\n"); } system("PAUSE"); }while (op != 'S'); return (0); } //FUNÇÃO AUXILIAR LER DADOS void regs_livros() { system("cls"); printf ("Digite o numero de registro do livro = "); fflush (stdin); fgets(regs, MAX, stdin); } //FUNÇÃO INSERIR void add_livros(){ regs_livros();//chamando a função Acervo *pnovo = (Acervo*) malloc(sizeof(Acervo));//alocando memoria para os novos strcpy(pnovo -> regs, regs); pnovo -> prox = NULL; if (topo == NULL)//se a pilha estiver vazia topo = pnovo; //topo recebe o novo elemento else{ pnovo->prox=topo; topo=pnovo; } } //FUNÇÃO EXCLUIR void remove_livros(){ Acervo *aux; if(topo==NULL){ printf ("\n\nErro, Registro de livro vazio .\n\n"); return; } else{ aux = topo; topo = topo -> prox; free(aux); printf ("\n Resgistro de livro removido do topo\n"); } } //FUNÇÃO LISTAR void listar_livros(){ Acervo *aux; aux = topo; printf ("\t\t\tEMPILHAMENTO\n\n"); while(aux != NULL){ printf ("Livro: %s", aux -> regs); aux = aux -> prox; } } Desde já agradeço quem puder ajudar!
  8. @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
  9. 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...