C'est une application qui permet de rechercher le nom complet d'un fichier sur une ou deux destination(s) specifique(s). Les methodes sont bien-sur exploitables en dehors de cette aplication. Par exemple, je l'ai crée pour rechercher le nom complet d'images qui sont sur mon disque dur mais qui changent tout le temps de position. De cette façon, je n'est plus à me faire chier à savoir exactement ou se trouve cette image, il me faut juste le nom correct. Et voila, on me retourne son emplacement...
Source / Exemple :
/*******************************************************************************
créé par AlphaSurfeur
- le 23 Avril 2003 ********************************/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.*;
import java.io.*;
public class ASRecherche extends JFrame {
// creation des composants
public int hauteur;
public boolean bo = false;
public Vector vecteur, vector;
public File fichierCherche, fichierTrouve, fichierDirection, fichierDirection2;
public String nomDeFichier, direction, direction2, memoryTestor;
public JLabel labelNom = new JLabel("Fichier à rechercher:", SwingConstants.CENTER);
public JLabel labelDirection = new JLabel("Direction initiale:", SwingConstants.CENTER);
public JTextField tfNom = new JTextField();
public JTextField tfDirection = new JTextField();
public JTextField tfDirection2 = new JTextField();
public JTextArea area;
public JButton bouton = new JButton("Remise à zero");
public JPanel haut, centre, bas;
public Border bord, bord1, vide;
// fin des composants
/** Creates new ASRechercheFichier */
public ASRecherche() {
super("Recherche de fichier");
// mise en place
area = new JTextArea(30, 72);
area.setEditable(false);
haut = new JPanel(new GridLayout(0, 5, 5, 5));
centre = new JPanel();
bas = new JPanel();
haut.add(labelNom); haut.add(tfNom);
haut.add(labelDirection); haut.add(tfDirection); haut.add(tfDirection2);
haut.setBorder(bord = BorderFactory.createTitledBorder( vide = BorderFactory.createEtchedBorder(1), "Données de la recherche"));
centre.add(new JScrollPane(area));
centre.setBorder(bord1 = BorderFactory.createTitledBorder( vide = BorderFactory.createEtchedBorder(1), "Résultats de la recherche"));
bas.add(bouton);
tfDirection.setToolTipText("Entrez la 1° direction comme ceci: \"X:/\"");
tfDirection2.setToolTipText("Entrez la 2° direction comme ceci: \"Y:/\"");
tfDirection2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ev){ // si deux directions
setCursor(new Cursor(Cursor.WAIT_CURSOR));
if(tfNom.getText() == null || tfNom.getText().equals("") || tfDirection.getText() == null || tfDirection.getText().equals("") || tfDirection2.getText() == null || tfDirection2.getText().equals("")){
erreur("Il faut entrer un nom de fichier et une\n direction pour lancer la recherche.");}
else{ // afficher le resultat
File fichier = chercher(tfNom.getText(), tfDirection.getText(), tfDirection2.getText());
if(bo == false){
area.append(fichier.toString());
information(fichier.toString());}
else{
area.append("\nfichier trouvé en : "+ fichier.toString());
information("fichier trouvé en: \n"+ fichier.toString());}
} // fin d'affichage du resultat
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}});
tfDirection.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ev){ // si une direction
setCursor(new Cursor(Cursor.WAIT_CURSOR));
if(tfNom.getText() == null || tfNom.getText().equals("") || tfDirection.getText() == null || tfDirection.getText().equals("")){
erreur("Il faut entrer un nom de fichier et une\n direction pour lancer la recherche.");}
else{ // afficher le resultat
File fichier = chercher(tfNom.getText(), tfDirection.getText());
if(bo == false){
area.append(fichier.toString());
information(fichier.toString());}
else{
area.append("\nfichier trouvé en : "+ fichier.toString());
information("fichier trouvé en: \n"+ fichier.toString());}
} // fin d'affichage du resultat
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}});
bouton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ev){
clear();}});
Container c = getContentPane();
c.add(haut, BorderLayout.NORTH);
c.add(centre, BorderLayout.CENTER);
c.add(bouton,BorderLayout.SOUTH);
c.validate();
information("inscrivez la ou les direction(s), puis tapez sur la touche \"enter\"");
setVisible(true);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
hauteur = (int)d.getHeight()-28;
setSize((int)d.getWidth(), hauteur);
} // fin de constructeur
//==============================================================================
// chercher
public File chercher(String nom_DeFichier, String direction_initiale, String direction_initiale2){
nomDeFichier = nom_DeFichier; direction = direction_initiale; direction2 = direction_initiale2;
fichierCherche = new File(nomDeFichier); fichierDirection = new File(direction);
fichierDirection2 = new File(direction2);
if(fichierDirection.isDirectory() && fichierDirection2.isDirectory()){
do{
surch(nomDeFichier, direction);
surch(nomDeFichier, direction2);}
while(fichierTrouve == null);
}
else{
erreur("Le fichier entré dans la zone \"direction\"\n n'est pas une direction");
}
return fichierTrouve;
} // fin de chercher
// chercher
public File chercher(String nom_DeFichier, String direction_initiale){
nomDeFichier = nom_DeFichier; direction = direction_initiale;
fichierCherche = new File(nomDeFichier); fichierDirection = new File(direction);
if(fichierDirection.isDirectory()){
do{
surch(nomDeFichier, direction);}
while(fichierTrouve == null);
}
else{
erreur("Le fichier entré dans la zone \"direction\"\n n'est pas une direction");
}
return fichierTrouve;
} // fin de chercher
// surch
public void surch(String nom_DeFichier, String nom_DeDirection){
try{
area.append("+++++++++++++++++++++surch+++++++++++++++++++++++\n");
direction = nom_DeDirection; nomDeFichier = nom_DeFichier;
fichierCherche = new File(nom_DeFichier); fichierDirection = new File(nom_DeDirection);
String contenue[] = fichierDirection.list();
Vector vecteur = new Vector();
Vector nouveauVecteur = new Vector();
// verifier si ce fichier n'a pas deja ete ouvert
if(memoryTestor == direction){ // si oui
fichierTrouve = new File("Ce fichier n'a pas ete trouvé");
bo = false;}
else{
memoryTestor = direction;
// verifier si la direction ne contient pas deja le fichier
int nbrDeFichiers = contenue.length;
int nbrDeDossiers = 0;
for(int i = 0; i < nbrDeFichiers; i++){
vecteur.addElement(direction+"/"+contenue[i]);}
// verifier si le dossier contient le fichier cherché
String verificateur = new String(direction+"/"+nomDeFichier);
if(vecteur.contains(verificateur)){
fichierTrouve = new File(verificateur);
bo = true;}
// verifier si les deux conditions bo et fichierTrouve sont ok
if(fichierTrouve != null && bo == true){ } // stopper
else{ // suite
// jetter tous les fichiers pour ne garder que les dossiers
// ajouter tous les dossiers dans le vecteur
for(int i = 0; i < nbrDeFichiers; i++){
File file[] = new File[contenue.length];
file[i] = new File(direction+"/"+contenue[i]);
if(file[i].isDirectory()){ // si dossier l'ajouter au vecteur
nbrDeDossiers++;
area.append("Ajout de "+file[i].toString()+"\n");
nouveauVecteur.addElement(file[i].toString());}
else{ // ne pas l'ajouter au vecteur
area.append("Supression de "+file[i].toString()+" ce n'est pas une direction"+"\n");
}
} // fin de boucle
area.append("NouvelleRecherche lancée"+"\n");
nouvelleRecherche(nouveauVecteur, nbrDeDossiers);
}} // fin de else
} // fin de try
catch(java.lang.NullPointerException ex){
fichierTrouve = new File("Ce fichier n'a pas ete trouvé");
bo = false;} // fin de catch
catch(java.lang.OutOfMemoryError ex){
fichierTrouve = new File("Mémoire insuffisante, erreur de calculs");
bo = false;} // fin de catch
} // fin de surch
public void nouvelleRecherche(Vector vec, int nbrDe_Fichiers){
area.append("+++++++++++++++nouvelle recherche++++++++++++++++\n");
// disposer le contenue de Vecteur dans nouveauContenue
int nbrDeFichiers = nbrDe_Fichiers;
String nouveauContenue[] = new String[nbrDeFichiers];
area.append("Il y a "+nbrDeFichiers+1+" éléments dans le vecteur de nouvelleRecherche"+"\n");
// sort les elements et les places dans un String[]
for(int i = 0; i < nbrDeFichiers; i++){
area.append("Ajout dans le vecteur de "+String.valueOf(vec.elementAt(i))+"\n");
nouveauContenue[i] = String.valueOf(vec.elementAt(i));}
// relancer la rechercherche pour chaque dossier
for(int i = 0; i < nbrDeFichiers; i++){
if(nouveauContenue[i] == null || nouveauContenue[i].equals("")){
fichierTrouve = new File("Ce fichier n'a pas ete trouvé");
bo = false;}
else{
area.append("Relance de la recherche à partir de: "+nouveauContenue[i]+"\n");
surch(nomDeFichier, nouveauContenue[i]);}}
} // fin de nouvelleRecherche
// clear()
public void clear(){
tfNom.setText(""); tfDirection.setText(""); tfDirection2.setText("");area.setText("Nouvelle recherche ?");
fichierTrouve = null; fichierCherche = null; fichierDirection = null;
fichierDirection2 = null; direction2 = null;
nomDeFichier = null; direction = null; bo = false;
vecteur = null; vector = null;
} // fin de clear
// erreur
public void erreur(String err){
JOptionPane.showMessageDialog(null, err, "Erreur...", JOptionPane.ERROR_MESSAGE);
} // fin d'erreur
// info
public void information(String info){
JOptionPane.showMessageDialog(null, info, "Information...", JOptionPane.INFORMATION_MESSAGE);
} // fin d'information
// main
public static void main(String arg[]){
ASRecherche r = new ASRecherche();
r.validate();
r.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} // fin de main
} // fin de class
Conclusion :
Y a qu'a la demarrer, tout devient tres claire.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.