Gostaria de saber se existe como criar uma classe só para guardar valores na memoria como se fosse uma tabela no banco de dados.Tipo preciso guardar informações de arquivos de um diretorio EX:
e depois recuperar a lista de arquivos.A intenção é gerar uma lista de arquivos de um diretorio de origem , depois uma lista de arquivos de destino , comparar os nomes e as datas e gerar uma lista de arquivos que serão atualizados.Já fiz este tipo de programa mas no Delphi e usando array.
na memoria? nao tenho certeza, mas pra isso ser possivel a aplicação nao pode parar,
ela deve ficar em espera.
Bem, c a aplicação continuar a executar vc apenas deve manter as inserções no array
(array é limitado, cuidado, recomendo um ArrayList ou parecido) e fazer um loop nisso com as verificações tal
Se o aplicativo for fechado tudo é perdido, para isso ser resolvido vc deve usar entao, serialização (q guarda o estado dos objetos)
ou entao gravar num arquivo de texto mesmo
espero ter ajudado
adrianohardcore
Obrigado , no caso eu só preciso dos dados enquanto a aplicação estiver em execução.No Delphi por exemplo eu jogo tudo em array , no java gostaria tentar algo diferente .
ducafe
Cria uma classe chamada Arquivos que conterá um array de objetos do tipo Arquivo.
importjava.util.Date;classArquivo{publicStringnome;publicDatedata;publicdoubletamanho;}classArquivos{publicArquivolista[];//o array que será usado pra armazenar os objetos do tipo ArquivoArquivos(){lista=newArquivo[10];}}publicclassMain{/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubArquivoa1=newArquivo();a1.nome="a1.txt";a1.tamanho=12345;Arquivoa2=newArquivo();a2.nome="a2.txt";a2.tamanho=2345;Arquivosarquivos=newArquivos();arquivos.lista[0]=a1;arquivos.lista[1]=a2;}}
Seria isso que vc precisa?
adrianohardcore
ducafe:
Cria uma classe chamada Arquivos que conterá um array de objetos do tipo Arquivo.
importjava.util.Date;classArquivo{publicStringnome;publicDatedata;publicdoubletamanho;}classArquivos{publicArquivolista[];//o array que será usado pra armazenar os objetos do tipo ArquivoArquivos(){lista=newArquivo[10];}}publicclassMain{/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubArquivoa1=newArquivo();a1.nome="a1.txt";a1.tamanho=12345;Arquivoa2=newArquivo();a2.nome="a2.txt";a2.tamanho=2345;Arquivosarquivos=newArquivos();arquivos.lista[0]=a1;arquivos.lista[1]=a2;}}
Seria isso que vc precisa?
Essa é a ideia , obrigado.Porem fiz isto :
packageutil;importdominio.Arquivo;importdominio.Arquivos;importjava.io.File;publicclassVerifica{Arquivoarq=newArquivo();publicvoidgera(Stringdir){Filediretorio=newFile(dir);FilefList[]=diretorio.listFiles();System.out.println("Numero de arquivos no diretorio : "+fList.length);Arquivolista[]=newArquivo[fList.length];for(inti=0;i<fList.length;i++){//System.out.println(fList[i].getName());arq.nome=fList[i].getName();arq.tamanho=fList[i].length();lista[i]=arq;}for(inti=0;i<fList.length;i++){//Testar a respostaSystem.out.println(lista[i].nome);}}}
Quando eu vou exibir a resposta ele esta repetindo o ultimo valor !
adrianohardcore
Alguém mais tem alguma ideia de porque estar repetindo o valor ? Caso este problema seja solucionado , o array que recebe os valores do objeto Arquivo pode ser do tipo static para não perder os valores enquanto o programa estiver rodando ?
fuadksd
seu atributo arq não pode ser uma atributo.
tens que declarar ele como variável local assim:
publicclassVerifica{classArquivo{publicStringnome;publicDatedata;publicdoubletamanho;}publicstaticvoidmain(String[]args){newVerifica().gera("C:");}publicvoidgera(Stringdir){Filediretorio=newFile(dir);FilefList[]=diretorio.listFiles();System.out.println("Numero de arquivos no diretorio : "+fList.length);Arquivolista[]=newArquivo[fList.length];for(inti=0;i<fList.length;i++){Arquivoarq=newArquivo();// System.out.println(fList[i].getName());arq.nome=fList[i].getName();arq.tamanho=fList[i].length();lista[i]=arq;}for(inti=0;i<lista.length;i++){// Testar a respostaSystem.out.println(lista[i].nome);}}}
desse modo, cada loop for salva num novo arquivo. do outro modo estava salvando sempre por cima do mesmo arquivo
adrianohardcore
Funcionou , muito obrigado ! Agora para eu usar essa informação em outra classe , qual a melhor alternativa , passar o array como retorno ou colocar a array como estática ? Tambem seria uma boa trocar de array para arrayList né ?
fuadksd
retorne o array no método gera()
minnha opiniao: se o algoritmo for só esse, deixa array. como tu ja sabes o tamanho do array previamente (o numero de diretorios) eu deixaria array. ArrayList é bom pra quando tu não sabe o número de elementos que tu vais adicionar.