begin process at 2010 02 09 14:32:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Systeme

 > COPIER LE CONTENU D'UNE CLEF USB

COPIER LE CONTENU D'UNE CLEF USB


 Information sur la source

Note :
5,67 / 10 - par 3 personnes
5,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Systeme Classé sous :usb, dossier, copie Niveau :Débutant Date de création :28/09/2006 Vu :11 581

Auteur : Abralou

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Ce code se lance en arrière plan et vérifie en permanence si une clef USB est connectée à l'ordinateur et, si c'est le cas il scanne tous les dossiers de la clef et copie les fichiers avec une certaine extention sur le disque dur dans un dossier spécifié au lancement et la copie ne commence qu'aprés un certain temps, ce qui évite de recopier toutes les clefs branchées. Les paramètres concernant les extentions et les dossiers sont à passer en argument au lancement.

Au départ j'ai créé ce code pour recopier les fichiers powerpoint que mes prof utilisaient à la fac quand ils ne voullaient pas nous filer de photocopies.

Source

  • import java.util.*;
  • import java.io.*;
  • public class USBDaemon implements Runnable {
  • static Boolean USBConnect = false;
  • static Boolean CopieOK = false;
  • static int compteur = 0;
  • static int tempo = 0;
  • static String extention;
  • static String dossier;
  • static String dossierSauvegarde;
  • static String Dossiers[];
  • public USBDaemon (String arg[]){
  • this.compteur = 0;
  • this.tempo = Integer.parseInt(arg[3]);
  • this.extention = arg[0];
  • this.dossier = arg[1];
  • this.dossierSauvegarde = arg[2];
  • Thread t = new Thread(this);
  • t.start();
  • }
  • public void attente() {
  • //System.out.println("Recherche dans : "+this.dossier);
  • File fichierDossier = new File(this.dossier);
  • if(fichierDossier.isDirectory()){
  • this.USBConnect = true;
  • // System.out.println("Clef USB connectée!");
  • }
  • else if (this.CopieOK) {
  • this.USBConnect = false;
  • this.CopieOK = false;
  • // System.out.println("Pas de clef USB détectée.");
  • }
  • else {
  • // System.out.println("Pas de clef USB détectée.");
  • }
  • }
  • public void compteur() {
  • //System.out.println("Vérification supplémentaire.");
  • File fichierDossier = new File(this.dossier);
  • if(fichierDossier.isDirectory()){
  • this.compteur++;
  • // System.out.println("Toujours connecté");
  • }
  • else {
  • this.USBConnect = false;
  • this.compteur = 0;
  • // System.out.println("Déconnecté.");
  • }
  • }
  • public void recherche() {
  • try {
  • this.CopieOK = true;
  • System.out.println("Epluchage des dossiers.");
  • File fichierDossier;
  • String contenu[];
  • File file;
  • String Temp[];
  • String FichierACopier[];
  • this.Dossiers = new String[1];
  • this.Dossiers[0] = "";
  • int i = 0;
  • while (i < Dossiers.length) {
  • //System.out.println(Dossiers[i]);
  • fichierDossier = new File(this.dossier+File.separator+Dossiers[i]);
  • contenu = fichierDossier.list();
  • for(int j = 0; j < contenu.length; j++){
  • file = new File(this.dossier+Dossiers[i]+File.separator+contenu[j]);
  • if(file.isDirectory()){
  • Temp = new String[Dossiers.length + 1];
  • for(int k = 0; k < Dossiers.length; k++){
  • Temp[k] = Dossiers[k];
  • }
  • Temp[Dossiers.length] = Dossiers[i]+File.separator+contenu[j];
  • Dossiers = Temp;
  • }
  • }
  • i++;
  • }
  • GregorianCalendar d = new GregorianCalendar();
  • String time = d.get(Calendar.DAY_OF_MONTH)+"-"+d.get(Calendar.MONTH)+"-"+d.get(Calendar.HOUR)+"-"+d.get(Calendar.MINUTE)+"-"+d.get(Calendar.SECOND);
  • FileInputStream read;
  • FileOutputStream write;
  • byte[] tabLu;
  • int nbLu;
  • File destination;
  • i = 0;
  • while (i < Dossiers.length) {
  • fichierDossier = new File(this.dossier+Dossiers[i]);
  • contenu = fichierDossier.list();
  • for (int j = 0; j < contenu.length; j++) {
  • if (contenu[j].indexOf(this.extention) != -1) {
  • System.out.println("Sauvegarde du fichier : "+this.dossier+Dossiers[i]+File.separator+contenu[j]);
  • System.out.println("Dans : "+this.dossierSauvegarde+File.separator+time+Dossiers[i]+File.separator+contenu[j]);
  • destination = new File(this.dossierSauvegarde+File.separator+time+Dossiers[i]+File.separator);
  • destination.mkdirs();
  • destination = new File(this.dossierSauvegarde+File.separator+time+Dossiers[i]+File.separator+contenu[j]);
  • file = new File(this.dossier+Dossiers[i]+File.separator+contenu[j]);
  • read = new FileInputStream(file);
  • write = new FileOutputStream(destination);
  • tabLu = new byte[10240];
  • while((nbLu = read.read(tabLu)) > 0){
  • write.write(tabLu,0,nbLu);
  • }
  • }
  • }
  • i++;
  • }
  • this.CopieOK = true;
  • System.out.println("Fini!");
  • }
  • catch ( java.io.FileNotFoundException e) { //102 - 103
  • }
  • catch ( java.io.IOException e) { // 107
  • }
  • }
  • public void run() {
  • while (true) {
  • try {
  • if (!this.USBConnect || this.CopieOK) {
  • this.attente();
  • Thread.sleep(60000);
  • }
  • else if (this.compteur < this.tempo) {
  • this.compteur();
  • Thread.sleep(60000);
  • }
  • else if (!this.CopieOK) {
  • this.recherche();
  • Thread.sleep(60000);
  • }
  • }
  • catch (InterruptedException e) { }
  • }
  • }
  • // java USBDaemon .ppt g: c:\sauvegarde 5
  • // java USBDaemon .ppt /media/sda1 /dd/sauvegarde 5
  • public static void main(String arg[]){
  • USBDaemon start = new USBDaemon(arg);
  • }
  • }
import java.util.*;
import java.io.*;

public class USBDaemon implements Runnable {

	static Boolean USBConnect = false;
	static Boolean CopieOK = false;
	static int compteur = 0;
	static int tempo = 0;
	static String extention;
	static String dossier;
	static String dossierSauvegarde;
	static String Dossiers[];

	public USBDaemon (String arg[]){
		this.compteur = 0;
		this.tempo = Integer.parseInt(arg[3]);
		this.extention = arg[0];
		this.dossier = arg[1];
		this.dossierSauvegarde = arg[2];
		
		Thread t = new Thread(this);
		t.start();
		
	}
	
	public void attente() {
		//System.out.println("Recherche dans : "+this.dossier);
		File fichierDossier = new File(this.dossier);
        	if(fichierDossier.isDirectory()){
			this.USBConnect = true;
//			System.out.println("Clef USB connectée!");
		}
		else if (this.CopieOK) {
			this.USBConnect = false;
			this.CopieOK = false;
//			System.out.println("Pas de clef USB détectée.");
		}
		else {
//			System.out.println("Pas de clef USB détectée.");
		}
	}
	
	public void compteur() {
		//System.out.println("Vérification supplémentaire.");
		File fichierDossier = new File(this.dossier);
        	if(fichierDossier.isDirectory()){
			this.compteur++;
//			System.out.println("Toujours connecté");
		}
		else {
			this.USBConnect = false;
			this.compteur = 0;
//			System.out.println("Déconnecté.");
		}
	}
	
	public void recherche() {
		try {
			this.CopieOK = true;
			System.out.println("Epluchage des dossiers.");
			File fichierDossier;
			String contenu[];
			File file;
			String Temp[];
			String FichierACopier[];
			this.Dossiers = new String[1];
			this.Dossiers[0] = "";
			int i = 0;
			while (i < Dossiers.length) {
				//System.out.println(Dossiers[i]);
				fichierDossier = new File(this.dossier+File.separator+Dossiers[i]);
				contenu = fichierDossier.list();
				
				for(int j = 0; j < contenu.length; j++){
					
					file = new File(this.dossier+Dossiers[i]+File.separator+contenu[j]);
					if(file.isDirectory()){
						Temp = new String[Dossiers.length + 1];
						for(int k = 0; k < Dossiers.length; k++){
							Temp[k] = Dossiers[k];
						}
						Temp[Dossiers.length] = Dossiers[i]+File.separator+contenu[j];
						Dossiers = Temp;
					}
				}
				
				
				i++;
			}
			
			GregorianCalendar d = new GregorianCalendar();
	
			String time = d.get(Calendar.DAY_OF_MONTH)+"-"+d.get(Calendar.MONTH)+"-"+d.get(Calendar.HOUR)+"-"+d.get(Calendar.MINUTE)+"-"+d.get(Calendar.SECOND);
			FileInputStream read;
			FileOutputStream write;
			byte[] tabLu;
			int nbLu;
			File destination;
			
			i = 0;
			while (i < Dossiers.length) {
				fichierDossier = new File(this.dossier+Dossiers[i]);
				contenu = fichierDossier.list();
				
				for (int j = 0; j < contenu.length; j++) {
					if (contenu[j].indexOf(this.extention) != -1) {
				
						System.out.println("Sauvegarde du fichier : "+this.dossier+Dossiers[i]+File.separator+contenu[j]);
						System.out.println("Dans : "+this.dossierSauvegarde+File.separator+time+Dossiers[i]+File.separator+contenu[j]);
						destination = new File(this.dossierSauvegarde+File.separator+time+Dossiers[i]+File.separator);
						destination.mkdirs();
						
						destination = new File(this.dossierSauvegarde+File.separator+time+Dossiers[i]+File.separator+contenu[j]);
						file = new File(this.dossier+Dossiers[i]+File.separator+contenu[j]);
						read = new FileInputStream(file);
						write = new FileOutputStream(destination);
						tabLu = new byte[10240];
						
						while((nbLu = read.read(tabLu)) > 0){
							write.write(tabLu,0,nbLu);
						}
					}
				}
				
				
				i++;
			}
			this.CopieOK = true;
			System.out.println("Fini!");
		}
		catch ( java.io.FileNotFoundException e) { //102 - 103
		
		}
		catch ( java.io.IOException e) { // 107
		
		}
		
		
	}
	
	public void run() {
		while (true) {
			try {
				if (!this.USBConnect || this.CopieOK) {
					this.attente();
					Thread.sleep(60000);
				}
				else if (this.compteur < this.tempo) {
					this.compteur();
					Thread.sleep(60000);
				}
				else if (!this.CopieOK) {
					this.recherche();
					Thread.sleep(60000);
				}
	
			}
			catch (InterruptedException e) { }
		}
	}

	// java USBDaemon .ppt g: c:\sauvegarde 5
	// java USBDaemon .ppt /media/sda1 /dd/sauvegarde 5
	public static void main(String arg[]){
		USBDaemon start = new USBDaemon(arg);
		
	}
	

 
 
}

 Conclusion

On le lance de cette facon :
java USBDaemon .ppt g: c:\sauvegarde 5

Ce qui signifie qu'on va recopier les fichiers *.ppt, que la clef USB est montée sur le lecteur g:, que les fichiers seront sauvegardés dans le dossier c:\sauvegarde, et que la copie ne commencera qu'aprés 5 min sans débrancher la clef.

Sous windows je conseille de le lancer au démarrage en passant par la base de registre et en utilisant "javaw -jar " au lieu de "java", ça sera totalement invisible.
Sous linux c'est beaucoup plus simple comme toujours^^


 Sources de la même categorie

Source avec Zip Source avec une capture ZFS GESTION DU BOOTLOADER par 78.ultima
RECHERCHE LDAP AVEC PAGINATION par caiman125
Source avec Zip Source avec une capture CLASSEXPLORER : EXPLORATEUR DE CLASSES JAVA par Chatbour
Source avec Zip APPLICATION DES SEMAPHORE POUR LA RESOLUTION DU PROBLEME DES... par shaft_amine
Source avec Zip JAVA ET TERMINAL-CAPABILITY par sheorogath

 Sources en rapport avec celle ci

ENVOI D'UNE ARBORESSENCE EN JAVA VERS SERVEUR FTP par moumou95
Source avec Zip Source avec une capture PETIT PROGRAMME DE COPIE RAPIDE DE FICHIER par cadjak
Source avec Zip DIRECTORYCHOOSER par domdom73
Source avec Zip COMMENT COPIER TOUTE UNE ARBORESCENCE par larsson
COPIER DES FICHIERS par cyriprog

Commentaires et avis

Commentaire de Twinuts le 28/09/2006 14:38:17 administrateur CS

Salut,

Quel interet de mettre toutes les variables en static?

et si l'utilisateur met une chaine en argument 3 ? tu fais quoi ? et en arg 1 si il ne met pas l'extention?

perso je te conseil plus de faire une vraie recherche des options exemple :
java USBDaemon -eppt -sg: -dc:\sauvegarde -t5
-e:extention
-s:source
-d:destination
-t:5

sans te focaliser sur leurs positions....

bref sinon il y a plus simple comme code et moins sans commentaires..... sans vouloir etre méchant sa vaut pas plus de 4/10.

Commentaire de transfear le 04/10/2006 01:36:51

Moi j'suis en désaccord avec Twinuts. Le code me semble clair. Il est simple et les System.out.println passés en commentaire nous permettent de comprendre l'essentiel. C'est vrai qu'il reste quelques modifications à apporter pour le rendre clean et qu'il pourrait être un peu plus portable mais ça me semble très bien!

8/10 !

Commentaire de sims42 le 30/10/2007 14:55:50

Bonjour,
Je ne suis pas développeur, mais ce genre de programme me serai très utile. Serait-il possible de créer un programme qui détecte chaque connection d'une clef USB et copie instantanément l'intégralité de la clef vers un fichier de sauvegarde. Le top serai même qu'il écrase les fichiers copiés lors d'une connection précédente.
Merci d'avance pour votre aide.

Commentaire de Abralou le 30/10/2007 23:14:37

Tout ce que tu veux faire est possible en modifiant ce code source. Par conte je laisse ces modifications à tes propres soins (pas besoins d'être un grand spécialiste pour les faire). Ce code est là pour servir de base à d'autre projets aprés tout^^

Commentaire de sims42 le 31/10/2007 16:18:58

Ce n'est pas de la fainéantise, je suis tout à fait incapable de modifier ce programme. il me serait juste très utile dans mon travail un fois modifié, mais si quelqu'un connait une adresse pour un programme similaire déjà crée je suis preneur... merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

copie de fichier en java [ par refre ] bonjour, j'ai une copie de fichier a faire. en fait j'ai un fichier dans un dossier et j'aimerai en faire une copie dans un autre fichier... mais j'ai Copie de fichier [ par nomade1000 ] %NOMADE%Bonjour all,J'aimerais copier dans un répertoire de mon choix un fichier que je selectione à partir d'un JFileChooser. Pour récupérer l'objet I/O en java? [ par indet2 ] j'aimerai beaucoup que l'on m'explique comment gérer les entrés sorties en java.Pour exemple, j'aimerai pouvoir récupérer toutes les images (jpg) cont Windows Xp Pro [ par NicoWatt ] Bonjour tout le monde !!! (Hello World !)Ma machine tourne sous Xp Pro. J'ai les droits d'admin.Mais quand je veux changer les attributs d'un dossier Recuperer le contenu d'un dossier web [ par MrEddy ] Salut,Sur mon site intranet, je souhaiterais a travers une applet envoyer des fichiers qui sont stockés sur le serveur ou il y a l'applet et les envoy Surveiller l'accès à un dossier [ par homerosaur ] Salut à tous,je recherche un moyen (en Java) de surveiller l'accès à un dossier sous Windows.En effet, le principe serait d'écouter un dossier et de r Reseau par cable USB [ par cdryk ] Salut à tous...Je viens faire appel à tous ceux qui seront capable d'expliquer à un newbie en réseau comment faire pour réaliser la chose suivante.Je Copie d'objets par VALEUR [ par Ghyzi ] Bonjour,je sais que les copies d'objets en Java se font par référence.Cependant, je voudrais faire une copie par valeur d'un vecteur.J'ai jeté un oeil Copier un objet ET NON SA REFERENCE dans une variable [ par darkstorm ] Bonjour,Mon problème est le suivant :si je faisArrayList copie;ArrayList objet=new ArrayList();objet.add("Salut");copie=objet;je copie la référence de XML copie partielle de document [ par ultrafil ] Salut,pour une fois il ne s'agit pas d'une question sur la 3D :)j'espere que quelqu'un utilise un peu xml, mon prob est de niveau newb.(j'utilise xerc


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales