lire un fichier texte utilisé par un autre processus - C#/.NET managed - Programmation
Marsh Posté le 06-04-2008 à 02:27:11
File.ReadAllLines() est un peu bourrin, et demande un accès exclusif au fichier pour tourner.
Il te faut donc passer par un FileStream, qui va te permettre de choisir les accès que tu veux t'accaparer, et ceux que tu admets pendant ton utilisation du fichier.
En gros, tu vas t'accaparer "Read" uniquement, et accepter "Read/Write".
Attention cependant, c'est pas forcément très heureux de manipuler un fichier qui est modifié par un autre process.
Marsh Posté le 06-04-2008 à 02:54:06
Par exemple :
Code :
|
Ca marche avec un fichier texte que je modifie depuis Notepad. Lorsque j'enregistre avec notepad, j'ai bien ma textbox qui s'allimente avec les modifications.
Attention toutefois, comme je dis, c'est mal dans le cas où ton fichier rétréchis. Dans mon cas, tu ne verras rien tant que je fichier n'aura pas de nouveau dépassé la dernière taille connue, et seulement ce qui dépasse de cette taille sera visible.
en gros, si j'ai dans mon fichier au début :
|
puis que je modifie en :
|
Ca donne :
|
Marsh Posté le 06-04-2008 à 12:57:34
ok
j'avais essayé avec un filestream justement, mais j'avais pas mis le parametres FileShare.ReadWrite
merci en tout cas, je testerai ça tout a l'heure
Marsh Posté le 06-04-2008 à 13:14:05
ps: mon fichier ne retrecis pas! il augmente plutot ^^ donc ça gene pas ta solution ^^
Marsh Posté le 06-04-2008 à 19:49:44
le problème, c'est pas trop qu'il rétrécisse ou non, c'est surtout que ce qui est écrit dedans, il ne faut plus jamais y toucher, uniquement rajouter des trucs à la fin (écritures en append uniquement)
Marsh Posté le 07-04-2008 à 23:01:40
yep
j'ai testé ça marche super bien
ce que je fais de toute maniere c'est just lire les dernier caracteres du fichier (1000 derniers caracteres) donc je teste juste la taille et zou
j'ecris pas dedans
merci en tout cas
Marsh Posté le 05-04-2008 à 17:52:18
hello
voila mon souci:
un serveur de jeu cree un fichier et ecrit dedans... moi je veux lire ce fichier
donc en toute logique j'ai fais un simple
qui me retourne un tableau de string pour chaque ligne
super ça marche
je lance le serveur, et boum ça marche plus. logique le serveur utilise ce fichier pour y stoquer des donnnées
seulement je viens de me rendre compte que si mon programme ne peut pas lire le fichier, NOTEPAD.EXE lui le peut
je vois mal notepad comme une appli genial super cool qui outrepasse les securité de windows
donc voila ma question:
comment s'y prend le notepad pour lire le fichier alors que mon appli se mange une exception?
ps: une de mes solutions consiste à copier ce fichier (la copie avec File.Copy() marche meme si le fichier est deja utilise) mais il est gros et donc ça fait lagguer le serveur..
---------------
mon feedback: http://forum.hardware.fr/hfr/Achat [...] 8120_1.htm