Leitura de arquivo com nome diferente

6 respostas
A

Estou com o seguinte problema. Tenho um código que faz a leitura de um arquivo de texto. Esse código está funcionando corretamente. Mas eu tenho um problema. A cada hora eu recebo via ftp um arquivo novo com um nome diferente. Nesse meu código eu coloco o nome do arquivo que eu quero ler. Não daria certo eu colocar para o usuário inserir o nome do arquivo pq esse código será rodado pelo tarefas agendadas do windows através de um bat que executa o jar criado. Qual seria a melhor solução para esse problema??

6 Respostas

rodrigo_corinthians

Esses arquivos ficam no mesmo diretório, certo?

Vc poderia verificar a última data da modificação dos arquivos, que tal??

A

O problema é que vai ser um novo arquivo e não um arquivo antigo alterado.

K

Cara … eu acredito que você possa usar algo parecido com isto aqui…
http://www.guj.com.br/posts/list/64002.java para descobrir o nome do arquivo (Exemplo teste.TXT) que você deverá ler… e depois de ler o arquivo sugiro que você renomeie a extensão (teste.OLD)

class ExemploDir {
     /**
             * @param startingDirectory O diretório inicial.
             * @param pattern Uma expressão regular que deve ser aplicada
             * ao nome do arquivo.
             */
     public List<File> findFiles (final File startingDirectory, final String pattern) {
         List<File> files = new ArrayList<File>();
         if (startingDirectory.isDirectory()) {
             File[] sub = startingDirectory.listFiles(new FileFilter() {
                 public boolean accept (File pathname) {
                     return pathname.isDirectory() || pathname.getName().matches (pattern);
                 }
             });
             for (File fileDir: sub) {
                 if (fileDir.isDirectory()) {
                     files.addAll (findFiles (fileDir, pattern));
                 } else {
                     files.add (fileDir); // 
                 }
             }
         }
         return files;
     }
     /**
     * 
     */

chamada:

ExemploDir ed = new ExemploDir();
ed.findFiles (new File("."), ".*\\.txt");
rodrigo_corinthians

Entaum mas a última data do arquivo seria a data de criação. :wink:

O código ficaria mais ou menos assim…File file = new File("DIRECTORY"); File[] files = file.listFiles(); List list = new ArrayList(); for(int i = 0; i < files.length; i++){ list.add(new Long(files[i].lastModified())); } Collections.sort(list); System.out.println(list.get(files.length - 1));Deve ter alguma solução melhor usando o TreeSet talvez…

Obs: Muitas das suas paixões são as mesmas das minhas… rs

A

Estava com uma idéia de criar um método que faz mais ou menos isso que vc falou. Ler todos os arquivos de uma pasta armazenar em um array e depois ir lendo um por um e armazenando no banco. Mas esse que vc me passou agora parece bem melhor. Vou testar ele e depois falo o resultado.

A

Consegui resolver meu problema assim:

/**
 * @(#)teste.java
 *
 *
 * @author 
 * @version 1.00 2007/7/30
 */
import java.io.*;
import java.util.*;
public class teste {
        
    /**
     * Creates a new instance of <code>teste</code>.
     */
     int cont;
     int nivel=0;
    public void teste() {
    String dir = "C://Documents and Settings//Administrador//Desktop//JAVA DRMO";
    java.io.File diretorio = new java.io.File(dir);
    String[] arquivos = diretorio.list();
    for (int i= 0; i < arquivos.length; i++){
    	if(arquivos[i].endsWith("java")){
        System.out.println(arquivos[i]);}
        nivel=nivel+1;
       }
    	System.out.println("Tenho "+nivel +" arquivos");
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        teste  t = new teste();
        t.teste();
    }
}

Estou lendo a pasta e pegando os nomes de arquivos pela extensão.
Valeu pela ajuda!!!

Criado 30 de julho de 2007
Ultima resposta 31 de jul. de 2007
Respostas 6
Participantes 3