IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

récupérer le fichier le plus récent


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Par défaut récupérer le fichier le plus récent
    Bonjour,

    Encore un post et oui sur la programmation en java.
    Donc mon souci aujourd'hui c'est de pouvoir récupérer le fichier le plus récent d'une liste de fichier d'un répertoire et d'afficher le contenu. Je pense qu'il ya quelques lignes à rajouter dans mon code mais je ne sais pas trop où et quoi(je crois que pour la lecture il faut utiliser Bufferred file reader et iterator mais j'en sais pas plus). Voici mon code qui me permet de récupérer tous les fichiers du dossier C:\temp. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     package exemple; 
     
    import java.io.*; 
     
    public class test { 
     
    public test() { 
    super(); 
    } 
     
    public void findFiles(String directoryPath) { 
    File directory = new File(directoryPath); 
    if(!directory.exists()){ 
    System.out.println("Le fichier/répertoire '"+directoryPath+"' n'existe pas"); 
    }else if(!directory.isDirectory()){ 
    System.out.println("Le chemin '"+directoryPath+"' correspond à un fichier et non à un répertoire"); 
    }else{ 
    File[] subfiles = directory.listFiles(); 
    String message = "Le répertoire '"+directoryPath+"' contient "+ subfiles.length+" fichier"+(subfiles.length>1?"s":""); 
    System.out.println(message); 
    for(int i=0 ; i<subfiles.length; i++){ 
    System.out.println(subfiles[i].getName()); 
    } 
    } 
    } 
     
    public static void main(String[] args) { 
    test finder = new test(); 
    finder.findFiles("C:/temp"); 
     
    } 
    }
    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de Sebou77
    Inscrit en
    Mars 2006
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 212
    Par défaut
    Voilà déja un petit truc pour récupérer la date de modification d'un fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date dateModification = new Date(monFichier.lastModified());

  3. #3
    Membre éclairé Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Par défaut
    salut,

    Merci pour ta réponse. J'ai réussi à me faire afficher le fichier texte le plus récent dans la console. Maitenant j'aimerais juste lire son contenu. Car j'ai créé un fichier texte. J'ai mis 2 lignes.Une ligne avec des noms séparé par des tabulations et une autre ligne avec les valeurs séparés aussi par des tabulations.Sa se présente donc comme sa :

    nom\tprénom\tsociété\tfonction\tdate\r
    MAS\tSébastien\tLivinfo\tDirecteur Commercial\t26\01\2007

    Voici le code que j'ai utilisé pour lister le répertoire et récupérer le fichier le plus récent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    package exemple;
     
    import java.io.*;
     
    public class Test {
     
    	public Test() {
    		super();
    	}
     
    	public  void findFiles(String directoryPath) {
    		File directory = new File(directoryPath);
    		File moreRecentFile = null;
    		if(!directory.exists()){
    			System.out.println("Le fichier/répertoire '"+directoryPath+"' n'existe pas");
    		}else if(!directory.isDirectory()){
    			System.out.println("Le chemin '"+directoryPath+"' correspond à un fichier et non à un répertoire");
    		}else{
    			File[] subfiles = directory.listFiles();
    			String message = "Le répertoire '"+directoryPath+"' contient "+ subfiles.length+" fichier"+(subfiles.length>1?"s":"");
    			System.out.println(message);
    			for(int i=0 ; i<subfiles.length; i++){
    				File subfile = subfiles[i];
    				//if(subfiles[i].endWith(".txt")==true){
    				System.out.println(subfiles[i].getName());
    				if (moreRecentFile != null && subfile.lastModified()>moreRecentFile.lastModified()) {
    					moreRecentFile = subfile;
    				} else {
    					moreRecentFile = subfile;
    				}
    			}
    			System.out.println("Le fichier le plus récent du répertoire "+directoryPath +" est "+moreRecentFile.getName());
    		}
    	}
     
    //	}
    	public static void main(String[] args) {
    		Test finder = new Test();
    		finder.findFiles("C:/temp");
     
    	}
    }
    Voilà. En espérant que sa puisse aider.
    Merci d'avance.

  4. #4
    Membre éclairé Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Par défaut
    Bon sa se précise un peu. J'ai rajouté des instructions pour lire mon fichier. Mais mon test sur le fichier text ne marche pas. Le "if File.end" ne fonctionne pas car end n'est que pour le type string. Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
     
    package exemple;
     
    import java.io.*;
     
    public class Test {
     
    	public Test() {
    		super();
    	}
     
    	public  void findFiles(String directoryPath) {
    		File directory = new File(directoryPath);
    		File moreRecentFile = null;
     
    		if(!directory.exists()){
    			System.out.println("Le fichier/répertoire '"+directoryPath+"' n'existe pas");
    		}else if(!directory.isDirectory()){
    			System.out.println("Le chemin '"+directoryPath+"' correspond à un fichier et non à un répertoire");
    		}else{
    			File[] files = directory.listFiles();
    			String message = "Le répertoire '"+directoryPath+"' contient "+ files.length+" fichier"+(files.length>1?"s":"");
    			System.out.println(message);
    			for(int i=0 ; i<files.length; i++){
    				File file = files[i];
    				if(files[i].end(".txt")==true){
    				System.out.println(files[i].getName());
    				if (moreRecentFile != null && file.lastModified()>moreRecentFile.lastModified()) {
    					moreRecentFile = file;
    				} else {
    					moreRecentFile = file;
    				}
    			}
    			System.out.println("Le fichier le plus récent du répertoire "+directoryPath +" est "+moreRecentFile.getName());
    		}
    		String ligne ;
    		try
    		{
    		BufferedReader br = new BufferedReader (new FileReader (moreRecentFile)) ;
     
    		while ((ligne = br.readLine()) != null)
    		{
     
    		}
     
    		}
    		catch (Exception e)
    		{
    		e.printStackTrace () ;
     
    	}
     
     
     
    	}
     
    //	}
    	public static void main(String[] args) {
    		Test finder = new Test();
    		finder.findFiles("C:/temp");
     
    	}
    }
    Voilà mon avancé. Donc si vous pouvez m'aider.
    Merci d'avance.

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Un petit refactor de la 1ere partie de ton code (la recherche)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    public  void findFiles(String directoryPath) {
    	File directory = new File(directoryPath);
    	File moreRecentFile = null;
     
    	// verification des parametres
    	if(!directory.exists()){
    		System.out.println("Le fichier/répertoire '"+directoryPath+"' n'existe pas");
    		return;
    	}
    	if(!directory.isDirectory()){
    		System.out.println("Le chemin '"+directoryPath+"' correspond à un fichier et non à un répertoire");
    		return;
    	}
     
    	// liste des fichiers "*.txt"
    	File[] files = directory.listFiles(
    		new FilenameFilter() {
    			public boolean accept(File dir, String name) {
    				return name.toLowerCase().endsWith(".txt");
    			}
    		}
    	);
     
    	// cas alternatif: pas de fichiers "*.txt"
    	if (files.length==0) {
    		System.out.println("Pas de fichier texte");
    		return;
    	}
     
    	// cas general: parcours et memorise le plus recent fichier
    	moreRecentFile=files[0];
    	for(File f:files) {
    		if (f.lastModified()>moreRecentFile.lastModified()) 
    			moreRecentFile = f;
    	}
     
    	System.out.println("Le fichier le plus récent du répertoire "+directoryPath +" est "+moreRecentFile.getName());
    }
    a partir de la, tu peux lire le contenu de ton fichier comme a ton habitude
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #6
    Membre éclairé Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Par défaut
    salut,

    effectivement sa fonctionne du tonnerre. Merci beaucoup. Par contre mais donc le code pour ouvrir le fichier ligne par ligne c'est :

    public static String readFile(File file) throws IOException, FileNotFoundException {

    // 1 - Création de la ressource
    FileReader reader = new FileReader(file);
    try {
    // 2 - Utilisation de la ressource
    StringBuffer buffer = new StringBuffer();
    char[] cbuf = new char[2048];
    int len;
    while ( (len = reader.read(cbuf)) > 0 ) {
    buffer.append(cbuf, 0, len);
    }
    return buffer.toString();
    } finally {
    // 3 - Libération de la ressource
    reader.close();
    }

    }
    Est-ce juste? Ou dois-je mettre le MostRecentFile pour que quand il détecte quel est le fichier le plus récent il lit les lignes de celui-ci?

    Merci encore pour toute l'aide apportée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer le fichier le plus récent
    Par galene86 dans le forum VBScript
    Réponses: 5
    Dernier message: 22/05/2015, 15h16
  2. [PHP 5.3] Récupèrer le nom du fichier le plus récent dans un dossier
    Par oOBaalberithOo dans le forum Langage
    Réponses: 3
    Dernier message: 25/02/2010, 14h26
  3. [MySQL 3.23] Récupérer la date la plus récente
    Par griese dans le forum Langage SQL
    Réponses: 10
    Dernier message: 19/12/2006, 14h19
  4. Fichiers le plus récent en BATCH
    Par nolan76 dans le forum Windows
    Réponses: 5
    Dernier message: 03/08/2006, 14h25
  5. Réponses: 2
    Dernier message: 12/03/2006, 23h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo