Belmires
-
Posts
9 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Belmires
-
-
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(); } }
-
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); } } } } } }
-
-
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(); } } }
-
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(); } } }
-
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(); } } }
-
@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
-
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
Codigo pra ler varios arquivos txt e gravar as informações em apenas um txt
em Java/Android SDK
Postado
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.