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é?
Répondre
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é
+ 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. –
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
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
AmitD Je n'ai jamais connu l'observateur. Classe vraiment utile! – RNJ
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
- 1. Android: Télécharger le fichier uniquement si modifié
- 2. Détecter comment un select a été modifié
- 3. detect web.config a été modifié
- 4. Comment git détecte-t-il qu'un fichier a été modifié?
- 5. Vim Buffer a été modifié
- 6. fichier batch Windows - vérifier si le fichier a été modifié
- 7. Comment vérifier si ChildControlsCreated a été modifié?
- 8. Télécharger ou rétablir un fichier localement modifié
- 9. Script Bash - détermine si le fichier a été modifié?
- 10. Java: comment savoir quand un document XML a été modifié
- 11. Comment savoir si un formulaire a été modifié
- 12. Comment vérifier si un EditText a été modifié ou non?
- 13. Comment vérifier si un fichier a été modifié/plus récent qu'un autre fichier utilisant PHP?
- 14. Éditeur TOAD sql - invite lorsque le fichier a été modifié?
- 15. reload contexte Tomcat après fichier source java a été modifié
- 16. Le fichier a été modifié? Maintenant pour gérer dans WPF?
- 17. Le fichier * a été modifié par SHAREPOINT \ system
- 18. La branche tfs a été fusionnée au coffre. Le nom du fichier vbproj a été modifié
- 19. vérifier quel menu déroulant a été modifié
- 20. Vérifier qu'un IList a été modifié?
- 21. Collection a été modifié pendant le dénombrement
- 22. Test si JavaScript a été modifié
- 23. Déterminer rapidement si un contenu de dossier a été modifié
- 24. Vérifiez si NSTextView a été modifié
- 25. Le segment UISegmentedControl sélectionné a été modifié
- 26. Colonnes disparaissent lorsque datagrid.datacontext a été modifié
- 27. efficace vérifier si datagridview a été modifié
- 28. notification après qu'un EditText a été modifié?
- 29. L'énumérateur d'exception NHibernate a été modifié
- 30. L'ordre des octets UIImage a été modifié
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é –
il y a comme 1000 fichiers, je ne peux pas le faire –
vous pouvez stocker des entrées de millions dans db –