Je cherche =E0 lire un fichier de fa=E7on continue
Et =E0 afficher ce contenu dans un JTextPane. Ce fichier
est remplit par un autre process externe
Y a t-il un moyen de reperer quand ce fichier est modifie
et de lire les nouvelles donnees qui viennent d'etre ajoutees ?
Je vois comment lire un fichier simple,avec un FileInputStream
BufferedReader et un while (b.readLine())!=3D null)
mais pas comment g=E9rer
l'aspect lecture continue.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
BJB
Bonjour,
As-tu essayé avecun Reader classique par exemple et de forcer la relecture de la fin en testant la taille du fichier pour savoir s'il à été ajouter ?
Tu peux de plus tenter http://java.sun.com/j2se/1.5.0/docs/api/java/io/RandomAccessFile.html avec le bon mode afin de permettre un accès simultané ...
A essayer ;-)
A+ JB
figma wrote:
Bonjour,
Je cherche à lire un fichier de façon continue Et à afficher ce contenu dans un JTextPane. Ce fichier est remplit par un autre process externe
Y a t-il un moyen de reperer quand ce fichier est modifie et de lire les nouvelles donnees qui viennent d'etre ajoutees ?
Je vois comment lire un fichier simple,avec un FileInputStream BufferedReader et un while (b.readLine())!= null) mais pas comment gérer l'aspect lecture continue.
Quelqu'un a t il une idee ? Merci
Bonjour,
As-tu essayé avecun Reader classique par exemple et de forcer la
relecture de la fin en testant la taille du fichier pour savoir s'il à
été ajouter ?
Tu peux de plus tenter
http://java.sun.com/j2se/1.5.0/docs/api/java/io/RandomAccessFile.html
avec le bon mode afin de permettre un accès simultané ...
A essayer ;-)
A+
JB
figma wrote:
Bonjour,
Je cherche à lire un fichier de façon continue
Et à afficher ce contenu dans un JTextPane. Ce fichier
est remplit par un autre process externe
Y a t-il un moyen de reperer quand ce fichier est modifie
et de lire les nouvelles donnees qui viennent d'etre ajoutees ?
Je vois comment lire un fichier simple,avec un FileInputStream
BufferedReader et un while (b.readLine())!= null)
mais pas comment gérer
l'aspect lecture continue.
As-tu essayé avecun Reader classique par exemple et de forcer la relecture de la fin en testant la taille du fichier pour savoir s'il à été ajouter ?
Tu peux de plus tenter http://java.sun.com/j2se/1.5.0/docs/api/java/io/RandomAccessFile.html avec le bon mode afin de permettre un accès simultané ...
A essayer ;-)
A+ JB
figma wrote:
Bonjour,
Je cherche à lire un fichier de façon continue Et à afficher ce contenu dans un JTextPane. Ce fichier est remplit par un autre process externe
Y a t-il un moyen de reperer quand ce fichier est modifie et de lire les nouvelles donnees qui viennent d'etre ajoutees ?
Je vois comment lire un fichier simple,avec un FileInputStream BufferedReader et un while (b.readLine())!= null) mais pas comment gérer l'aspect lecture continue.
Quelqu'un a t il une idee ? Merci
ekse
figma wrote:
Bonjour,
Je cherche à lire un fichier de façon continue Et à afficher ce contenu dans un JTextPane. Ce fichier est remplit par un autre process externe
Y a t-il un moyen de reperer quand ce fichier est modifie et de lire les nouvelles donnees qui viennent d'etre ajoutees ?
Je vois comment lire un fichier simple,avec un FileInputStream BufferedReader et un while (b.readLine())!= null) mais pas comment gérer l'aspect lecture continue.
Quelqu'un a t il une idee ? Merci
Pour savoir si ton fichier est modifié, tu fais un simple Listener qui lance un Thread. Ce Thread, tous les X ms, vérifie la date de dernière modification du fichier qu'il écoute.
Pour lire ce qui a été rajouté, c'est peut-être plus compliqué. Est-ce que des données déjà lu peuvent être supprimées ou modifiées ? Si c'est le cas et à moins que ton fichier soit trop gros, mieux vaut tout relire et le réécrire dans ton JTextPane.
Sinon, tu utilises toujours ton FileInputStream et tu fait un skip de la taille que tu as lu précédement, puis tu lis le reste.
figma wrote:
Bonjour,
Je cherche à lire un fichier de façon continue
Et à afficher ce contenu dans un JTextPane. Ce fichier
est remplit par un autre process externe
Y a t-il un moyen de reperer quand ce fichier est modifie
et de lire les nouvelles donnees qui viennent d'etre ajoutees ?
Je vois comment lire un fichier simple,avec un FileInputStream
BufferedReader et un while (b.readLine())!= null)
mais pas comment gérer
l'aspect lecture continue.
Quelqu'un a t il une idee ?
Merci
Pour savoir si ton fichier est modifié, tu fais un simple Listener qui
lance un Thread. Ce Thread, tous les X ms, vérifie la date de dernière
modification du fichier qu'il écoute.
Pour lire ce qui a été rajouté, c'est peut-être plus compliqué. Est-ce
que des données déjà lu peuvent être supprimées ou modifiées ? Si c'est
le cas et à moins que ton fichier soit trop gros, mieux vaut tout relire
et le réécrire dans ton JTextPane.
Sinon, tu utilises toujours ton FileInputStream et tu fait un skip de la
taille que tu as lu précédement, puis tu lis le reste.
Je cherche à lire un fichier de façon continue Et à afficher ce contenu dans un JTextPane. Ce fichier est remplit par un autre process externe
Y a t-il un moyen de reperer quand ce fichier est modifie et de lire les nouvelles donnees qui viennent d'etre ajoutees ?
Je vois comment lire un fichier simple,avec un FileInputStream BufferedReader et un while (b.readLine())!= null) mais pas comment gérer l'aspect lecture continue.
Quelqu'un a t il une idee ? Merci
Pour savoir si ton fichier est modifié, tu fais un simple Listener qui lance un Thread. Ce Thread, tous les X ms, vérifie la date de dernière modification du fichier qu'il écoute.
Pour lire ce qui a été rajouté, c'est peut-être plus compliqué. Est-ce que des données déjà lu peuvent être supprimées ou modifiées ? Si c'est le cas et à moins que ton fichier soit trop gros, mieux vaut tout relire et le réécrire dans ton JTextPane.
Sinon, tu utilises toujours ton FileInputStream et tu fait un skip de la taille que tu as lu précédement, puis tu lis le reste.
figma
Merci pour les pistes, je vais tester le thread qui scrute la derniere modification ou la taille du fichier.
Mes donnees ne peuvent pas être supprimees ni modifiees en fait. Mais le fichier que je relis est assez volumineux, donc je vais essayer le skip
merci A+
Merci pour les pistes, je vais tester le thread qui scrute
la derniere modification ou la taille du fichier.
Mes donnees ne peuvent pas être supprimees ni modifiees
en fait. Mais le fichier que je relis est assez volumineux,
donc je vais essayer le skip
Merci pour les pistes, je vais tester le thread qui scrute la derniere modification ou la taille du fichier.
Mes donnees ne peuvent pas être supprimees ni modifiees en fait. Mais le fichier que je relis est assez volumineux, donc je vais essayer le skip
merci A+
Francis JUGE-BOIRARD
Bonjour, j'ai du mettre au point un système répondant à ce problème. Ci dessous, le code que j'utilise pour gérer le fichier. for (;;) { String lu = ""; int bLu; File file = new File (argv[4] + "../" + FILE_NAME); if (file.exists ()) file.delete (); file.createNewFile (); file.deleteOnExit (); FileInputStream fis = new FileInputStream (file); for (;;) { bLu = fis.read (); if (bLu == -1) { try { Thread.sleep (1000); } catch (InterruptedException ie) {} continue; } do lu += (char) bLu; while ((bLu = fis.read ()) != -1); break; } parse (lu); fis.close (); } Ce bout de code supprime le fichier lors du démarrage du programme puis le recré. Il nécessite donc quelques modifications mais fonctionne correctement.
Bonjour,
j'ai du mettre au point un système répondant à ce problème. Ci dessous, le code que j'utilise pour gérer
le fichier.
for (;;)
{
String lu = "";
int bLu;
File file = new File (argv[4] + "../" + FILE_NAME);
if (file.exists ())
file.delete ();
file.createNewFile ();
file.deleteOnExit ();
FileInputStream fis = new FileInputStream (file);
for (;;)
{
bLu = fis.read ();
if (bLu == -1)
{
try
{
Thread.sleep (1000);
}
catch (InterruptedException ie)
{}
continue;
}
do
lu += (char) bLu;
while ((bLu = fis.read ()) != -1);
break;
}
parse (lu);
fis.close ();
}
Ce bout de code supprime le fichier lors du démarrage du programme puis le recré. Il nécessite donc
quelques modifications mais fonctionne correctement.
Bonjour, j'ai du mettre au point un système répondant à ce problème. Ci dessous, le code que j'utilise pour gérer le fichier. for (;;) { String lu = ""; int bLu; File file = new File (argv[4] + "../" + FILE_NAME); if (file.exists ()) file.delete (); file.createNewFile (); file.deleteOnExit (); FileInputStream fis = new FileInputStream (file); for (;;) { bLu = fis.read (); if (bLu == -1) { try { Thread.sleep (1000); } catch (InterruptedException ie) {} continue; } do lu += (char) bLu; while ((bLu = fis.read ()) != -1); break; } parse (lu); fis.close (); } Ce bout de code supprime le fichier lors du démarrage du programme puis le recré. Il nécessite donc quelques modifications mais fonctionne correctement.