Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LISTING DE FICHIER


Information sur la source

Catégorie :Divers Classé sous : recursif, listing, fichier, vector, ecrire Niveau : Débutant Date de création : 27/04/2006 Date de mise à jour : 28/06/2006 00:02:45 Vu : 5 954

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note


Description

j'ai fait ce code a la suite d'une demande d'un ami quand il ma demander ce que j'avais comme mp3
sur mon pc, il y en avait trop pour que je le fasse a ala main donc voila l'informatique au service des faineants^^

cette source sert lister les fichier que vous voulez avec l'extenstion que vous voulez
je pense que c'est un bon exemple de recherche recursive de fichier , elle est un eu du meme genre que ma source de suppression de dossier mais elle montre comment stocker des information et les ecrire dans un fichier

quand j'aurais le temps je mettrais des commentaires mais je pense que le code est comprehensible

++
 

Source

  • import java.io.*;
  • import java.util.*;
  • public class ListingMp3 extends Thread implements Runnable {
  • public static Vector<File> vect = new Vector<File>();
  • public ListingMp3(File Finit) {
  • this.Finit = Finit;
  • System.out.println("fichier initiale :" + Finit.getName());
  • }
  • public void run() {
  • ArrayList<File> array = new ArrayList<File>();
  • File[] listing = Finit.listFiles();
  • for (int i = 0; i < listing.length; i++) {
  • array.add(listing[i]);
  • }
  • for (int p = 0; p < array.size(); p++) {
  • list(array.get(p));
  • }
  • WriteFile(vect);
  • }
  • private void WriteFile(Vector<File> toWrite) {
  • try {
  • new File("mp3Listing.txt").delete();
  • PrintWriter out = new PrintWriter(new FileOutputStream(
  • "mp3Listing.txt", true));
  • for (int z = 0; z < toWrite.size(); z++)
  • out.write(toWrite.elementAt(z) + "\n");
  • out.close();
  • } catch (Exception e) {
  • e.printStackTrace();
  • }
  • }
  • private void list(File file) {
  • if (file.isFile()) {
  • if (file.getName().endsWith(".mp3")
  • || file.getName().endsWith(".wav")) {
  • System.out.println(file.getName());
  • vect.add(file);
  • }
  • } else if (file.isDirectory()) {
  • File[] listing = file.listFiles();
  • for (int i = 0; i < listing.length; i++) {
  • if (listing[i].isDirectory()) {
  • list(listing[i]);
  • } else {
  • if (listing[i].getName().endsWith(".mp3")
  • || listing[i].getName().endsWith(".wav")) {
  • vect.add(listing[i]);
  • System.out.println(listing[i].getName());
  • }
  • }
  • }
  • }
  • }
  • public File Finit;
  • }
import java.io.*;
import java.util.*;

public class ListingMp3 extends Thread implements Runnable {

	public static Vector<File> vect = new Vector<File>();

	public ListingMp3(File Finit) {

		this.Finit = Finit;

		System.out.println("fichier initiale :" + Finit.getName());
	}

	public void run() {

		ArrayList<File> array = new ArrayList<File>();
		File[] listing = Finit.listFiles();
		for (int i = 0; i < listing.length; i++) {
			array.add(listing[i]);
		}
		for (int p = 0; p < array.size(); p++) {
			list(array.get(p));
			
		}
		WriteFile(vect);
	}

	private void WriteFile(Vector<File> toWrite) {
		try {
			new File("mp3Listing.txt").delete();
			PrintWriter out = new PrintWriter(new FileOutputStream(
					"mp3Listing.txt", true));

			for (int z = 0; z < toWrite.size(); z++)
				out.write(toWrite.elementAt(z) + "\n");
			out.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	private void list(File file) {
		if (file.isFile()) {
			if (file.getName().endsWith(".mp3")
					|| file.getName().endsWith(".wav")) {
				System.out.println(file.getName());
				vect.add(file);
			}
		} else if (file.isDirectory()) {
			File[] listing = file.listFiles();
			for (int i = 0; i < listing.length; i++) {
				if (listing[i].isDirectory()) {
					list(listing[i]);
				} else {
					if (listing[i].getName().endsWith(".mp3")
							|| listing[i].getName().endsWith(".wav")) {
						vect.add(listing[i]);
						System.out.println(listing[i].getName());
					}
				}
			}
		}

	}

	public File Finit;
}

Historique

28 juin 2006 00:02:45 :
array.remove(p); => suppression de cette ligne qui fausse tout les resultat

Commentaires et avis

signaler à un administrateur
Commentaire de brasseld le 27/04/2006 13:22:19

ça aurait été bien que tu organises mieux ta source. Car la je cherche aprés tes attributs de classe et je m'aperçois qu'il y en a en haut et en bas... De plus, le nom d'attribut avec une majuscule, c'est pas bien, tout comme les noms de méthodes... Seul le nom de classe doit être composé d'une majuscule en premiére position.
De plus, dans la méthode run(), je ne vois pas pourquoi tu fais une deuxiéme boucle. Elle me semble inutile. Et pour la récursivité c'est bien...mais question rapidité c'est pas trop ça je pense... Vaut mieux pas avoir un DD 200 Go juste pour ta musique car tu vas y passer du temps.
Je pense que tu devrais lancer chaque parcours de dossier dans une Thread... Et pouvoir limiter ou augmenter ce nombre en fonction de la rapidité d'éxécution que tu veux obtenir.

Finalement, plutôt que d'ajouter tous tes noms de fichier dans un vecteur puis de rebalancer ensuite dans un fichier : écris directement le nom dans ton fichier.... Car si tu as beaucoup de données à écrire, c'est pas cool encore pour la perf.

Et re finalement : juste un p'tit détail. Quand tu parcours une ArrayList ou un Vector, utilises un Iterator, beaucoup plus rapide, car il me semble que la méthode get d'une ArrayList fonctionne comme une liste chaînée. Mais je ne suis plus sûr de ça, c'est à vérifier.

signaler à un administrateur
Commentaire de sheorogath le 27/04/2006 14:33:51 administrateur CS

ouais je regarderais ce que je peux modifier en fonction de ce que tu dit mais c'est quasi instantanne pour 15go de musique (:$)
c'est pour ca que je l'ai laisse tel quel

enfin merci pour ton commentaire ^^

++

signaler à un administrateur
Commentaire de donald_lover le 27/04/2006 14:57:38

Euh "extends Thread implements Runnable" c'est pas utile, un seul suffit, le Runnable sert pour une classe qui aurai deja hérité d'une autre classe (donc qui aurait deja un extends) visiblement ici non donc le Runnable ne sert pas.
Pour les deux boucles je suis assez d'accord je ne suis pas sur de l'utilité de la chose, pourquoi ne pas tout faire dans la meme, en plus de cette manière tu n'aurai plus besoin de ton tableau array vu que tu stock pour relire et le virer.
Sinon apres je n'ai pas analysé en profondeur (si je crois qu'il ya un e en trop à inital dans "fichier initiale" :p mais bon je dirai rien la dessus je suis aussi nul en orthographe).

signaler à un administrateur
Commentaire de sheorogath le 29/06/2006 11:53:16 administrateur CS

Temps d'exÚcution : 371563 ms
nb fichier => 304081

les deux boucle sont utile j'ai 200 seconde de moins d'execution avec ;) (j'en avais 555 000 ms a peu pres sans)

signaler à un administrateur
Commentaire de sheorogath le 29/06/2006 12:49:18 administrateur CS

Temps d'exÚcution : 306407 ms
nb fichier => 304061
en ayant ferme eclipse :p

signaler à un administrateur
Commentaire de dkomar le 18/10/2006 13:33:39

Salut,

je suis tombé sur ton code par hasard alors je poste un message même si c'est pas tout récent !
pour les personnes connaissant le shell !!!

Windows (par exemple) :
cmd%> dir /B /A -D /S *.mp3 *.wav > output.txt

environ 3500 ms (presque 100 fois moins) sur un HDD de 30GO contenant 28GO de données dont 12GO de MP3 / WAV

et pas besoin du runtime Java, ;-)

p.s : je pense que le resultat serait encore plus beau et plus rapide sous une bonne debian sarge

signaler à un administrateur
Commentaire de jyboo le 09/07/2007 15:53:01

Salut,
je voulais savoir si le vector remet une liste trié dans un ordre quelconque (croissant ou décroissant du nom), ou bien si il recupère les noms de chaque fichier de facon désordonnée. Merci.

signaler à un administrateur
Commentaire de sheorogath le 09/07/2007 15:55:19 administrateur CS

ben heu aleatoire

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

ecrire les données d'un vector ds un fichier. [ par The_plaiserman ] slt tous le monde;&nbsp;j&#233; une id&#233;e d'ecrire les informations,&nbsp;d'un vector de type String, ds un fichier.please help methanks......... ouvrir fichier texte et ecrire a la suite [ par anneli ] bonjour,voila j'ai un fichier texte que je creer de la facon suivante:File file =new File ("test.txt");FileWriter fw = new FileWriter(file,true);et qu Question sur l'ecrire d'un fichier [ par ObiWanKennedy ] Voil&#224;, j'aimerais ajout&#233; des lignes de donn&#233;e&nbsp;&#224; un fichier texte de base sans &#233;craser ce qu'il y a dedans quoi. Est-ce p Urgent: ecrire et lire dans un fichier [ par vincentd401 ] Bonsoir, J'ai besoin d'ecrire et de lire dans un fichier de type File, ou autre, a une ligne donn&#233;e. J'ai essay&#233; avec les classes de bases d lecture et écriture depuis une Applet [ par javinc ] Je pr&#233;cise : le fichier &#224; lire ou &#233;crire est sur le m&#234;me serveur que l'Applet.Voici mon code :m&#233;thode pour lire un fichier de ecrire des " dans un fichier ou une string [ par nounouX ] Bonjour a tous voila j'essaye d ecrire dans un fichier de la sorte :&nbsp;&nbsp;try{&nbsp;&nbsp;&nbsp;PrintWriter sortie = new PrintWriter(new FileWri ecrire avec java dans un fichier texte [ par brad1024 ] j'ai reussi a ecrire avec java dans un fichier texte, le prob c que j'arrive pa a faire le retour chariot dans le fichier lui meme Ecrire dans un fichier sans effacer le contenu [ par indo__ ] Bonjour, je n'arrive pas a à trouver comment écrire dans un fichier sans effacer le contenu de ce dernier, existe t-il une methode permettant d'écrire Ecrire dans un fichier texte [ par copsblondin ] Bonjour,Je souhaite &#233;crire dans un fichier plusieurs ligne ms a chaque fois&nbsp;que j'ex&#233;cute le programme, la ligne ajout&#233;e &#233;cra lire et ecrire une ligne dans un fichier [ par nadddd ] salut a tousen faite, je dois ecrire des lignes dans un fichier et pouvoir les lire par apresj'aimerais utiliser que des string, c'est a dire, ecrire


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.