2012-08-29 6 views
2

Je fais un programme qui est un lanceur pour un serveur privé d'un jeu. Si je change le serveur, je dois changer le client, ainsi je veux qu'il télécharge seulement les dossiers changés, et n'écrase pas les vieux dossiers. J'utilise dropbox pour stocker les fichiers. Comment puis-je faire ceci?Comment télécharger un fichier uniquement s'il a été modifié?

+0

créer une entrée dans la base de données, le statut défini sur fichier modifié et l'accès à l'état modifié –

+0

il y a comme 1000 fichiers, je ne peux pas le faire –

+0

vous pouvez stocker des entrées de millions dans db –

Répondre

1

Maintenir la version du fichier sur le côté serveur en utilisant DB ou aller pour la somme de contrôle pour identifier le fichier modifié

+0

+ 1 en utilisant la taille du fichier et la date de modification peut être plus rapide que le calcul d'une somme de contrôle. –

+0

Mais ces valeurs sont moins fiables. Les dates de modification peuvent être effectuées par le toucher, les installateurs ou d'autres facteurs en dehors du contrôle des développeurs. – MadProgrammer

4

En Java 7, vous pouvez obtenir des notifications en utilisant WatchService

En utilisant cette API, vous pouvez vous inscrire à divers événements

ENTRY_CREATE – A directory entry is created. 
ENTRY_DELETE – A directory entry is deleted. 
ENTRY_MODIFY – A directory entry is modified. 
OVERFLOW – Indicates that events might have been lost or discarded. You do not have to register for the OVERFLOW event to receive it. 

L'extrait de code suivant montre comment enregistrer une instance de chemin pour les trois types d'événements:

import static java.nio.file.StandardWatchEventKinds.*; 

Path dir = ...; 
try { 
WatchKey key = dir.register(watcher, 
         ENTRY_CREATE, 
         ENTRY_DELETE, 
         ENTRY_MODIFY); 
} catch (IOException x) { 
System.err.println(x); 
} 

En utilisant WatchEvent vous pouvez appeler une notification appropriée à votre application ce fichier est modifié et le télécharger

+0

AmitD Je n'ai jamais connu l'observateur. Classe vraiment utile! – RNJ

0

Je commence par jeter un oeil à la Dropbox SDK

Je voudrais aussi faire en sorte que chaque fichier sur le serveur est associé un MD5 (autre checksum). Vous pouvez télécharger ces sommes de contrôle et les comparer aux fichiers que vous avez installés sur votre ordinateur local. Si l'une des sommes de contrôle est différente, vous pouvez télécharger le fichier dont vous avez besoin.

Jetez un oeil à How can I generate an MD5 hash? et How do I generate an MD5 digest for a file

Questions connexes