Bonjour à tous,

je suis un étudiant francais en stage en allemagne et j'ai un petit souci.
En fait je dois écrire un programme qui consiste à lire des données en temps réel dans un fichier csv. Mon problème c'est que pendant la lecture de ce fichier de nouvelles lignes seront ajoutées via un programme extérieur. Donc en gros, je cherche à lire un fichier csv qui est lui-même modifié par un autre programme tout en laissant ouvert le csv dans mon code java...

Pour le moment j'ai fait ca:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
File file = new File(path);
BufferedReader bufRdr = new BufferedReader(new FileReader(file));
 
while(line = bufRdr.readLine() != null){
 
  "je récupère mes données ligne par ligne"
 
}

Le problème c'est que je ne suis pas sur que ca marchera lorsque mon programme tiers ajoutera des lignes à mon fichier csv. En effet, j'ai dans un premier temps lancé ce code java tout en essayant de modifier manuellement des donnés dans le csv avec excel et ca plante avant la fin avec le message suivant:
"Stale NFS file handle"

Donc ca me laisse penser que lorsque que mon programme extérieur modifiera mon csv ca fera tout planter, qu'en pensez-vous? (je n'ai pas encore accès à ce programme tiers pour l'instant)

Qui plus est, lorsque ma boucle while a parcourue tout le csv ligne par ligne, je ne voudrais pas sortir de la boucle mais plutôt attendre jusqu'à ce qu'une nouvelle ligne soit ajouté. Cependant, je n'ai pas trouvé de fonction du genre
If (bufRdr.nextLineIsEmpty()) then wait jusqua ce que ce ne soit plus vide.

Auriez-vous une idée intéressante? J'ai pensé reparcourir le fichier ligne par ligne chaque seconde (une ligne est ajouté chaque seconde) mais certains csv font genre 400mo donc sera beaucoup trop long en terme de calcul, j'ai vraiment besoin de pouvoir le lire dynamiquement sans le fermer.

Merci pour toute idée intéressante ou commentaire,

Antoine