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

  1. #1
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    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 actif Avatar de Sebou77
    Inscrit en
    Mars 2006
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2006
    Messages : 212
    Points : 223
    Points
    223
    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 régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    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 régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    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 régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    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.

  7. #7
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Yop,

    pas d'idée? Je galère à fond là. En plus après il faut que je parse mon fichier. ce que je ne sais absolument pas faire. Pouvez-vous svp m'aider car je mouline rien que pour lire les 2 lignes de mon fichier.

  8. #8
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Re,

    Bon laissez tmober l'étape d'ouverture et d'affichage des lignes du fichier.

    Dans mon fichier text il y a 2 lignes. Elles sont composés comme sa:

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

    \t pour une tabulation et \r pour le retour chariot.

    Pouvez me dire ce que je dois rajouter à mon code existant pour pouvoir parser ces 2 lignes. Car le but de la manip c'est de pouvoir afficher dans un programme existant les informations précédantes. La première ligne correspond à des champs et la deuxième à leur valeur.

    Voilà. Svp j'ai vraiment besoin d'aide car j'y arrive pas la. Je vous redonne mon code précédent si vous pouvez m'aider.

    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
    65
    66
    67
    68
     
    package exemple;
     
    import java.io.*;
     
    public class Test {
     
    	public Test() {
    		super();
    	}
     
    	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());
     
     
     
     
    	}
     
     
     
     
     
     
     
     
    	public static void main(String[] args) {
    		Test finder = new Test();
    		finder.findFiles("C:/temp");
     
     
    	}
    }

  9. #9
    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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Perso, voila comment je fais pour lire le contenu d'un fichier texte dans une String:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private String getFileContent(String filename) throws IOException {
    	StringBuffer sb = new StringBuffer();
    	BufferedReader in = new BufferedReader(new FileReader(filename));
    	String str = null;
    	while ((str = in.readLine()) != null) 
    		sb.append(str);
    	in.close();
    	return sb.toString();
    }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  10. #10
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    j'ai remplacé filename par moreRecentFile pour lui indiquer que je voulais qu'il ouvre le fichier détecté. Mais rien ne se passe dans la console d'éclipse. Je n'y comprend rien. Il m'affiche juste 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
     
     
    private String getFileContent(String moreRecentFile) throws IOException {
    		StringBuffer sb = new StringBuffer();
    		BufferedReader in = new BufferedReader(new FileReader(moreRecentFile));
    		String str = null;
    		while ((str = in.readLine()) != null) 
    			sb.append(str);
    		in.close();
    		return sb.toString();
    	}
     
     
     
     
     
     
    	public static void main(String[] args) {
    		Test finder = new Test();
    		finder.findFiles("C:/temp");
     
     
    	}
    }

  11. #11
    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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Code vite fait pour ton probleme (a toi la gestion des erreurs):
    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
    private Map<String,String> getFileContentAsMap(String filename) throws IOException {
    	BufferedReader in = new BufferedReader(new FileReader(filename));
     
    	// lecture 1ere ligne
    	List<String> column = new ArrayList<String>();
    	String str = in.readLine();
    	for(String s:str.split("\t"))
    		column.add(s);
     
    	// lecture 2nde ligne
    	Map<String,String> map = new HashMap<String,String>();
    	str = in.readLine();
    	String values[] = str.split("\t");
    	for(int i=0;i<values.length;i++) 
    		map.put(column.get(i),values[i]);
     
    	in.close();
    	return map;
    }
    Exemple d'utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    (...)
    Map<String,String> map = getFileContentAsMap("fichier.txt");
    String nomdumec = map.get("nom");
    String boitedumec = map.get("société");
    (...)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  12. #12
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    oulah,

    excuse moi mais ce bout de code permet d'ouvrir et de lire les 2 lignes ou de parser la chaine?
    Car la je suis perdu.Pourquoi y a 2 parties de codes?
    Je suis vraiment un débutant.

    Je reprend déjà depuis le début,

    1 j'ai créé le fichier text à la main et j'ai insérer dedans les nom des champs avec les valeurs.
    2 ce fichier est détecté comme étant le plus récent du dossier temp grace à au code précédemment donné.
    3 je n'arrive ni a le parser, ni a afficher les lignes. Normalement il aurait du le lire car moreRecentFile correspond à mon fichier le plus récent. C'est donc une variable.Donc il devrait la reconnaitre quand je la passe en paramètre.
    4 Je compren ni ce que veut dire le code ke tu ma envoyé ni a koi il sert.
    5 Excuse moi, je stresse a fond la

  13. #13
    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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par kifouillou
    excuse moi mais ce bout de code permet d'ouvrir et de lire les 2 lignes ou de parser la chaine?
    Les 2 mon general...

    Le code complet (non testé car tapé en direct live):
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    private File getMostRecentFile(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 null;
    	}
    	if(!directory.isDirectory()){
    		System.out.println("Le chemin '"+directoryPath+"' correspond à un fichier et non à un répertoire");
    		return null;
    	}
     
    	// 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 null;
    	}
     
    	// 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());
    	return moreRecentFile;
    }
     
    private Map<String,String> getFileContentAsMap(File file) throws IOException {
    	// verification des parametres
    	if (file==null) return null;
     
    	// flux de lecture du fichier
    	BufferedReader in = new BufferedReader(new FileReader(file));
     
    	// lecture 1ere ligne
    	List<String> column = new ArrayList<String>();
    	String str = in.readLine();
    	for(String s:str.split("\t"))
    		column.add(s);
     
    	// lecture 2nde ligne
    	Map<String,String> map = new HashMap<String,String>();
    	str = in.readLine();
    	String values[] = str.split("\t");
    	for(int i=0;i<values.length;i++) 
    		map.put(column.get(i),values[i]);
     
    	in.close();
    	return map;
    }
     
    public static void main(String[] args) {
    	Test finder = new Test();
     
    	File f = finder.getMostRecentFile("C:/temp");
    	Map<String,String> map = getFileContentAsMap(f);	
     
    	if (map!=null) {
    		String nomdumec = map.get("nom");      // nom d'une colonne tel que dans la 1ere ligne du fichier
    		String boitedumec = map.get("société");  // idem
    		System.out.println(nomdumec + " travaille dans la societe " + boitedumec);
    	}
    }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  14. #14
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

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

    merci beaucoup beaucoup pour ton aide plus que précieuse. Sa me génère juste une erreur dans la console :

    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
    at java.util.ArrayList.RangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at exemple.Test.getFileContentAsMap(Test.java:78)
    at exemple.Test.main(Test.java:88)

    Voilà.Si tu vois ce que c'est.Sinon tant pis.En tout cas encore merci.

  15. #15
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Citation Envoyé par kifouillou
    at exemple.Test.getFileContentAsMap(Test.java:78)
    Regarde à cette ligne l'instruction qu'il y a.
    "Le calendrier, c'est la bureaucratie du temps." Quino

  16. #16
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    c'est linstruction de la lgne 78 :

    map.put(column.get(i),values[i]);

  17. #17
    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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par kifouillou
    c'est linstruction de la lgne 78 :

    map.put(column.get(i),values[i]);
    ah bah, j'avais prevenu qu'il n'y avait pas de gestion d'erreur

    A priori l'exception a lieu lorsqu'il y a plus de données dans la 2eme ligne du fichier que de nom de colonne dans la 1ere ligne.

    modif a 2 balles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(int i=0;i<values.length;i++)  {
    	if (i>=column.size()) break;  // plus de données que de colonne -> exit 
    	map.put(column.get(i),values[i]);
    	System.out.println("Debug: "+column.get(i)+"="+values[i]);
    }
    PS: En relisant mon code, je me demande pourquoi j'ai créé une List<String> au lieu d'utiliser directemnt le String[] renvoyé par le split(). . Comme quoi il faut reflechir avant de coder
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  18. #18
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    re moi,

    maintenant il m'indike une erreur à cette ligne là :

    private static Map<String,String> getFileContentAsMap(File file) throws IOException

    Exception in thread "main" java.lang.Error: Problème de compilation non résolu :
    Cette méthode doit renvoyer un résultat de type Map<String,String>

    at exemple.Test.getFileContentAsMap(Test.java:60)

  19. #19
    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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Chez moi ca marche.

    A part ce petit oubli dans le main():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	File f = finder.getMostRecentFile("C:/temp");
    	Map<String,String> map = finder.getFileContentAsMap(f);
    (que toi tu as résolu en mettant la methode en static)

    Résulat:
    Le fichier le plus récent du répertoire C:/temp est test.txt
    Debug: nom=MAS
    Debug: prénom=Sébastien
    Debug: société=Livinfo
    Debug: fonction=Directeur Commercial
    Debug: date=26\01\2007
    MAS travaille dans la societe Livinfo
    PS: T'aurais pas oublié de faire le "return map;" a la fin de la methode getFileContentAsMap() ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  20. #20
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Ben si c'est trop tard ou que t'es pa chaud, tu n'es pas obligé de le faire. Mais c'est vrai que sa m'aiderait grandement.

    sa m'affiche sa a moi :

    Debug: nom\tprénom\tsociété\tdate\tdurée\tadresse\tfonction\r=Mas
    null travaille dans la societe null

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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