Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ASP - OUVRIR UN FICHIER POUR LE MODIFIER SELON UNE RECHERCHE


Information sur la source

Catégorie :Fichiers/Disque Niveau : Initié Date de création : 23/04/2002 Date de mise à jour : 21/05/2003 11:42:29 Vu : 15 562

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note


Description

Une astuce que j'ai mis en place pour pouvoir modifier un fichier en live sur le serveur (dans le cas de base c'était directement à la suite de l'upload).

Bref l'exemple va montrer comment changer la seconde et la troisième ligne d'un fichier texte, sans modifier la suite ni le début du fichier.  
 

Source

  • 'Modification du fichier dans les 3 lignes du début
  • Set FSO = Server.CreateObject("Scripting.FileSystemObject")
  • Fnm = strPath & NomFichier
  • Reste =""
  • 'Ouverture du fichier en lecture
  • set Lecture = FSO.OpenTextFile(Fnm,1,false)
  • 'On garde la premiere ligne en mémoire
  • FirstLine = Lecture.readLine
  • 'on passe les 2 lignes suivantes (la seconde et la troisième)
  • Lecture.skipLine
  • Lecture.skipLine
  • 'On charge enfin en mémoire le reste du fichier.
  • While not Lecture.atEndOfStream
  • Reste = Reste + Lecture.readLine + vbCr
  • Wend
  • Lecture.close
  • 'On Met en mémoire le caractere qu'on souhaite mettre à la place des données d'origine.
  • SecondLine = "AAAAAAAA"
  • ThirdLine = "Le texte"
  • 'On ouvre en écriture
  • set Ecriture = FSO.OpenTextFile(Fnm,2,false)
  • 'On ecrit toute les données stockées en mémoire
  • Ecriture.writeLine FirstLine
  • Ecriture.writeLine SecondLine
  • Ecriture.writeLine ThirdLine
  • Ecriture.writeLine Reste
  • 'On ferme le fichier.
  • Ecriture.close
'Modification du fichier dans les 3 lignes du début
Set FSO = Server.CreateObject("Scripting.FileSystemObject") 

Fnm = strPath & NomFichier

Reste =""

'Ouverture du fichier en lecture
set Lecture = FSO.OpenTextFile(Fnm,1,false) 

'On garde la premiere ligne en mémoire
FirstLine = Lecture.readLine 

'on passe les 2 lignes suivantes (la seconde et la troisième)
Lecture.skipLine 
Lecture.skipLine 

'On charge enfin en mémoire le reste du fichier.
While not Lecture.atEndOfStream
   Reste = Reste + Lecture.readLine + vbCr
Wend 
Lecture.close

'On Met en mémoire le caractere qu'on souhaite mettre à la place des données d'origine.
SecondLine = "AAAAAAAA"
ThirdLine = "Le texte"

'On ouvre en écriture
set Ecriture = FSO.OpenTextFile(Fnm,2,false) 

'On ecrit toute les données stockées en mémoire
Ecriture.writeLine FirstLine 
Ecriture.writeLine SecondLine
Ecriture.writeLine ThirdLine
Ecriture.writeLine Reste

'On ferme le fichier.
Ecriture.close
   

Conclusion

Il suffit maintenant de l'adapter à votre goût.
Bon codage

Romelard Fabrice (Alias F___)
 

Commentaires et avis

signaler à un administrateur
Commentaire de cyrille le 23/11/2004 17:21:53

Bonjour,

J'ai un problème à l'utilisation de votre exemple. Le message dans le navigateur est le suivant :

Erreur de compilation Microsoft VBScript error '800a0401'

Fin d'instruction attendue

/iisHelp/common/500-100.asp, line 11

Dim objASPError, blnErrorWritten, strServername, strServerIP, strRemoteIP Dim strMethod, lngPos, datNow, strQueryString, strURL
--------------------------------------------------------------------------^
Erreur d'exécution Microsoft VBScript error '800a0035'

Fichier introuvable

/generer_texte.asp, line 21

Peut-être avez-vous un indice ou une information pour m'aider ?

Merci d'avance et salutations,

Cyrille Christophe.

signaler à un administrateur
Commentaire de cyrille le 23/11/2004 17:47:26

Désolé pour le dérangement, j'ai trouvé.

Salutations,

Cyrille Christophe.

signaler à un administrateur
Commentaire de bo2ni le 08/10/2005 14:05:07

Bonjour

Est-il possible de modifier un fichier en cours de lecture ?
Je ne vois que des exemples d'écriture de fichier en partant d'un nouveau fichier vide.
Dans l'exemple ci-dessus, on ouvre en lecture un fichier "Lecture" pour ecrire dans un fichier "Ecriture".

Dans mon cas, j'ai besoin de lire un fichier, et de modifier une ligne pendant que je parcours ce fichier. Je n'ai pas envie de manipuler deux fichiers.

Merci pour votre aide

Bo2ni

signaler à un administrateur
Commentaire de fabrice69 le 08/10/2005 15:08:02 administrateur CS

Bonjour,
Vous n'avez pas bien consulté cette source. Il s'agit du même fichier que nous modifions dans cette exemple.
Je ne fait que :
- ouvrir > Lire > Modifier > Enregistrer
Je ne gère pas 2 fichiers mais un seul.
Cordialement
Romelard Fabrice.

signaler à un administrateur
Commentaire de bo2ni le 08/10/2005 15:20:09

Tu me dis que l'on ne gère qu'un seul fichier dans ce code mais pourtant je vois 2 instanciations :

# 'Ouverture du fichier en lecture
# set Lecture = FSO.OpenTextFile(Fnm,1,false)

# 'On ouvre en écriture
# set Ecriture = FSO.OpenTextFile(Fnm,2,false)

Je vois également que la méthode Readline ne se fait que sur le fichier "Lecture" et que la méthode Writeline ne se fait que sur le fichier "Ecriture".

# FirstLine = Lecture.readLine
(..)
#    Reste = Reste + Lecture.readLine + vbCr

# Ecriture.writeLine FirstLine
# Ecriture.writeLine SecondLine
# Ecriture.writeLine ThirdLine
# Ecriture.writeLine Reste

Je suis débutant en programmation VBScript mais il me semble que ce code source est assez clair. Surtoput au niveau du nommage des variables.

Peux tu m'expliquer quel est le SEUL fichier que l'on manipule ici ?

Merci
Bo2ni

signaler à un administrateur
Commentaire de bo2ni le 08/10/2005 15:39:13

Autant pour moi
Je n'avais pas vu que le fichier, étant nommé Fnm, est utilisé à la fois en lecture et en écriture.

merci par ta rapidité
Bo2ni

signaler à un administrateur
Commentaire de fabrice69 le 08/10/2005 17:32:19 administrateur CS

Pas de soucis.
Bonne continuation.
Romelard Fabrice

signaler à un administrateur
Commentaire de sboinot le 03/02/2006 12:16:45

Bonjour,
J'ai un probleme lors de l'ouverture en ecriture il me met "Permission refusée"
Je pense que c'est parce que je n'est pas les droits ??
Mais pourtatn le dossier est autorisé en ecriture :( avez vous une idée ??

Merci

signaler à un administrateur
Commentaire de fabrice69 le 03/02/2006 14:37:30 administrateur CS

Il est possible, mais le compte faisant fonctionner IIS a t'il les droits d'écriture.
Fabrice

signaler à un administrateur
Commentaire de sboinot le 03/02/2006 14:45:57

En fait je ne sait pas trop ou puis-je voir ca ?? répertoire de base ??
Car en fait mon fichier se trouve en dehors de ce dernier :(
J'ai essayer egalement d'enlever les anti virus mais sans résultats..
aurait tu d'autre solutions a me proposer ?

Merci

signaler à un administrateur
Commentaire de fabrice69 le 03/02/2006 23:03:35 administrateur CS

Ce sont les droits NTFS appliqués au répertoire ou sont stockés les fichiers.
Fabrice

signaler à un administrateur
Commentaire de salas_wolf le 28/04/2006 12:34:27

Slt g bien regarder tous vos commentaire et je voudrais savoir si lon peu aussi rechercher un mot ds une ligne via la methode : Lecture.Read(5) = mot_recherché.
Bien sur le mot_recherché serait de 5 caratères.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.