Je cours un programme qui lit les informations d'un fichier spécifique. Si, pendant l'exécution du programme, je modifie le contenu de ce fichier ou le supprime, le programme ne fonctionnera-t-il pas correctement? Sur une note similaire, j'ai un programme qui crée un fichier dans mon espace de travail. Si j'exécute ce programme et que je l'exécute à nouveau avec des paramètres différents pendant la première exécution, le fichier en cours de création sera-t-il remplacé et écrasé?Modifier les fichiers lors de l'exécution du programme Java dans Eclipse
Répondre
Dépend de comment vous lisez le contenu et le système d'exploitation lui-même. Habituellement, il y a un tampon de lecture, ce tampon est rempli en utilisant le contenu actuel du fichier réellement servi par le système d'exploitation. Si vous supprimez le fichier pendant la lecture, il y aura habituellement un IOException
. Pour être relativement sûr que personne d'autre ne modifie le contenu (ou ne supprime le fichier) pendant que vous lisez le fichier, vous pouvez utiliser un file-lock en Java.
La deuxième question dépend de la synchronisation, un flux ou un lecteur aura un curseur à la position à l'intérieur du fichier. Si le deuxième programme remplace avec succès le fichier le premier programme ouvert mais est plus petit que le curseur du premier programme, il y aura une exception IOException sur la prochaine commande read
du premier programme car le curseur est en fait hors de la plage .
Un fichier est "lu" à un moment donné par votre programme. Si vous supprimez le fichier avant cela, vous obtiendrez une erreur "open" et/ou une exception "read". Si vous changez le fichier après cela, votre programme sera désynchronisé avec le contenu actuel du fichier. Comme la plupart des E/S sont mises en mémoire tampon, il peut y avoir une superposition entre le moment où votre programme initie le "read()" et le moment où le "read I/O" se produit réellement. BOTTOM LINE: Si vous pensez qu'un programme doit être synchronisé avec le contenu actuel du fichier, vous devez ["lock"] (http://www.studytrails.com/java-io/file-locking.jsp) fichier. – paulsm4
Bienvenue sur Stackoverflow! –