begin process at 2010 02 09 18:11:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > LECTURE/ECRITURE DANS FICHIER

LECTURE/ECRITURE DANS FICHIER


 Information sur la source

Note :
8,08 / 10 - par 12 personnes
8,08 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichiers / Disque Source .NET ( DotNet ) Classé sous :modification, fichier Niveau :Débutant Date de création :14/08/2003 Date de mise à jour :18/08/2003 14:12:25 Vu / téléchargé :30 789 / 1 799

Auteur : spectresombre

Ecrire un message privé
Site perso
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

 Description

Voilà quelques ptites méthodes à insérer dans une classe pour pouvoir lire/écrire/modifier dans un fichier texte.
le fichier texte se presentera comme ça :

variable1 ; valeur1
variable2 : valeur2
etc...

Utile pour garder des valeurs :)  

Source

  • /* LECTURE D'UNE VARIABLE */
  • public string LireFile(string fichier, string variable)
  • {
  • string valeur = "";
  • FileInfo fi = new FileInfo(fichier);
  • /* on verifie si le fichier existe puis on ouvre l'acces au fichier */
  • if (fi.Exists)
  • {
  • string s; string[] text;
  • FileStream fs = new FileStream(fichier, FileMode.Open);
  • StreamReader sr = new StreamReader(fs);
  • /* On crée une boucle qui compare les variables lignes par lignes */
  • /* jusqu'a trouver la variable demandée */
  • do
  • {
  • s = sr.ReadLine();
  • if ((s != null) && (s.StartsWith(variable) == true))
  • {
  • text = s.Split(new char[]{':'});
  • valeur = text[1].Trim();
  • }
  • } while (s != null);
  • }
  • /* On retourne la valeur de la variable (retourne chaine vide si pas trouvé) */
  • return valeur;
  • }
  • /* AJOUTER UNE VARIABLE ET SA VALEUR */
  • public void EcrireFile(string fichier, string variable, string valeur)
  • {
  • string s = "";
  • FileInfo fi = new FileInfo(fichier);
  • /* On recupère le texte complet du fichier */
  • if (fi.Exists) // on verifie ke le fichier existe
  • {
  • StreamReader sr = new StreamReader(fichier, ASCIIEncoding.Default);
  • s = sr.ReadToEnd();
  • sr.Close();
  • }
  • /* si le fichier est vide ou si il n'existe pas on le crée */
  • /* et on ajoute la variable et sa valeur */
  • if (s == null || s == "")
  • {
  • StreamWriter sw = new StreamWriter(fichier, false, ASCIIEncoding.Default);
  • sw.Write(variable + " : " + valeur);
  • sw.Close();
  • }
  • else // Sinon on ajoute simplement la ligne apres celle existante
  • {
  • StreamWriter sw = new StreamWriter(fichier, true, ASCIIEncoding.Default);
  • sw.Write("\r\n" + variable + " : " + valeur);
  • sw.Close();
  • }
  • }
  • /* MODIFICATION DE LA VALEUR D'UNE VARIABLE */
  • public void ModifFile(string fichier, string variable, string valeur)
  • {
  • FileInfo fi = new FileInfo(fichier);
  • if (fi.Exists) // si le fichier existe
  • {
  • /* On met la totalité du fichier dans un variable */
  • StreamReader sr = new StreamReader(fichier, ASCIIEncoding.Default);
  • string s = sr.ReadToEnd();
  • sr.Close();
  • /* On trouve ou est placé la variable dans le fichier */
  • int i = s.IndexOf(variable);
  • /* On trouve la fin de la ligne de cette variable */
  • int n = s.IndexOf("\r\n", i);
  • /* On récupère la chaine dans la variable p */
  • string p = s.Substring(i, n - i);
  • /* Enfon on remplace p par la variable + valeur donnée */
  • s = s.Replace(p, variable + " : " + valeur);
  • StreamWriter sw = new StreamWriter(fichier, false, ASCIIEncoding.Default);
  • sw.Write(s);
  • sw.Close();
  • }
  • }
/* LECTURE D'UNE VARIABLE */
public string LireFile(string fichier, string variable)
{
   string valeur = "";
   FileInfo fi = new FileInfo(fichier);

/* on verifie si le fichier existe puis on ouvre l'acces au fichier */
   if (fi.Exists)
   {
      string s; string[] text;
      FileStream fs = new FileStream(fichier, FileMode.Open);
      StreamReader sr = new StreamReader(fs);

/* On crée une boucle qui compare les variables lignes par lignes */
/* jusqu'a trouver la variable demandée */
      do
         {
            s = sr.ReadLine();
            if ((s != null) && (s.StartsWith(variable) == true)) 
            {
                text = s.Split(new char[]{':'}); 
                valeur = text[1].Trim();
            }
         } while (s != null);

   }

/* On retourne la valeur de la variable (retourne chaine vide si pas trouvé) */
   return valeur;

}


/* AJOUTER UNE VARIABLE ET SA VALEUR */
public void EcrireFile(string fichier, string variable, string valeur)
{

   string s = "";
   FileInfo fi = new FileInfo(fichier);

/* On recupère le texte complet du fichier */
   if (fi.Exists) // on verifie ke le fichier existe
   {
      StreamReader sr = new StreamReader(fichier, ASCIIEncoding.Default);
      s = sr.ReadToEnd(); 
      sr.Close();
   }

/* si le fichier est vide ou si il n'existe pas on le crée */
/* et on ajoute la variable et sa valeur */
   if (s == null || s == "") 
   {
      StreamWriter sw = new StreamWriter(fichier, false, ASCIIEncoding.Default);
      sw.Write(variable + " : " + valeur);
      sw.Close(); 
   }
   else // Sinon on ajoute simplement la ligne apres celle existante
   {
      StreamWriter sw = new StreamWriter(fichier, true, ASCIIEncoding.Default);
      sw.Write("\r\n" + variable + " : " + valeur);
      sw.Close();
   }

}


/* MODIFICATION DE LA VALEUR D'UNE VARIABLE */
public void ModifFile(string fichier, string variable, string valeur)
{

   FileInfo fi = new FileInfo(fichier);

   if (fi.Exists) // si le fichier existe
   {

/* On met la totalité du fichier dans un variable */
      StreamReader sr = new StreamReader(fichier, ASCIIEncoding.Default);
      string s = sr.ReadToEnd(); 
      sr.Close();

/* On trouve ou est placé la variable dans le fichier */
      int i = s.IndexOf(variable);

/* On trouve la fin de la ligne de cette variable */
      int n = s.IndexOf("\r\n", i);

/* On récupère la chaine dans la variable p */
      string p = s.Substring(i, n - i); 

/* Enfon on remplace p par la variable + valeur donnée */
      s = s.Replace(p, variable + " : " + valeur);
      StreamWriter sw = new StreamWriter(fichier, false, ASCIIEncoding.Default);
      sw.Write(s);
      sw.Close();
   }

}  

 Conclusion

C'est bidon mais très utile pour ceux qui ne savait pas :)  

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip PILOTER WORD VIA MICROSOFT.OFFICE.INTEROP.WORD par whismeril
Source avec Zip PILOTER EXCEL VIA MICROSOFT.OFFICE.INTEROP.EXCEL par whismeril
Source avec Zip Source .NET (Dotnet) CHECK IDENTICAL FILES par eldim
Source avec Zip Source avec une capture Source .NET (Dotnet) RICHTEXTBOX NUMÉROTÉ (NUMÉROS DE LIGNES) par jray
Source avec Zip Source avec une capture SURVEILLER FICHIERS CRÉÉS AVEC FILESYSTEMWATCHER AMÉLIORÉ par TheOnlyMaX

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) RECHERCHE ET GESTION DE FICHIERS PERSONNALISÉES par JeremyLecouvert
Source .NET (Dotnet) GREP POUR WINDOWS par Warny
Source avec Zip Source .NET (Dotnet) CHECK IDENTICAL FILES par eldim
Source avec Zip Source avec une capture Source .NET (Dotnet) LA PROCÉDURE CONSERVÉE ÉTANT REGARDANT DE par richardgaspar
Source avec Zip Source avec une capture Source .NET (Dotnet) SUPPRIMER LES TAG BOM DANS FICHIER UTF-8 par gluk

Commentaires et avis

Commentaire de spectresombre le 14/08/2003 21:32:51

J'ai oublie de préciser de rajouter un using System.IO et un using System.Text :)

Commentaire de gg00xiv le 16/08/2003 15:12:48

illisible, surtout si ca sadresse au debutants ...

Commentaire de tommz le 17/08/2003 18:57:32

comme gg00xiv...
c'est mal codé en plus et c'est super fermé comme code..

Commentaire de spectresombre le 18/08/2003 09:43:22

Pour la présentation j'avoue ke la mise en page n'est pas extra (un vendredi soir avant de quitter le taf j'étais pressé lol)
Par contre "super fermé"..... C'est pas censé faire le café ce script.

Commentaire de spectresombre le 18/08/2003 11:28:21

Et pour Tommz : J'accepte volontiers les critiques sauf celles de personne qui ne mettent pas de sources :)

Commentaire de Bki le 18/09/2003 11:18:04

Pour LireFile(fichier, variable), et peut-être pour d'autres, j'ai pas vérifié, je ne vois pas de sr.Close(). Il faut toujours les fermer.

Je pense que ton code pour modifier une variable plante s'il n'y a qu'une seule variable dans le fichier. Il ne trouvera pas le "
" et ça retournera -1, tu feras donc un substring avec un indice négatif. A vérifier quand même... Ca vient du fait que quand tu lis une ligne de fichier, ça enlève les marques de fin de ligne.

Commentaire de Jujufouq le 23/04/2004 17:43:01

Je cherche à modifier une séquence d'octets dans un fichier de plusieurs GigaOctets par une autre séquence d'octets de même taille que la première. Il est bien évident que je ne vais pas faire passer le fichier dans une variable... alors comment faire???

Commentaire de dadavidou2005 le 04/08/2004 17:24:55

Voici le code corrigé. (avec la fermeture des descripteurs).  :)  a+

using System.IO;
using System.Text;

/* LECTURE D'UNE VARIABLE */
public string LireFile(string fichier, string variable)
{
string valeur = "";
FileInfo fi = new FileInfo(fichier);

/* on verifie si le fichier existe puis on ouvre l'acces au fichier */
if (fi.Exists)
{
string s; string[] text;
FileStream fs = new FileStream(fichier, FileMode.Open);
StreamReader sr = new StreamReader(fs);

/* On crée une boucle qui compare les variables lignes par lignes */
/* jusqu'a trouver la variable demandée */
do
{
s = sr.ReadLine();
if ((s != null) && (s.StartsWith(variable) == true))
{
text = s.Split(new char[]{':'});
valeur = text[1].Trim();
}
} while (s != null);

fs.Close ();
sr.Close ();

}

/* On retourne la valeur de la variable (retourne chaine vide si pas trouvé) */
return valeur;

}


/* AJOUTER UNE VARIABLE ET SA VALEUR */
public void EcrireFile(string fichier, string variable, string valeur)
{

int flag;
FileInfo fi = new FileInfo(fichier);

/* On recupère le texte complet du fichier */
if (fi.Exists) // on verifie ke le fichier existe
{
flag = 1;
StreamWriter sw = new StreamWriter(fichier, true, ASCIIEncoding.Default);
sw.Write(variable + " : " + valeur + "\r\n");
sw.Close();

}
else
{
flag = 0;
}
/* On retourne la valeur du drapeau (retourne 0 si pas trouvé) */
return flag;
}


/* MODIFICATION DE LA VALEUR D'UNE VARIABLE */
public void ModifFile(string fichier, string variable, string valeur)
{

FileInfo fi = new FileInfo(fichier);

if (fi.Exists) // si le fichier existe
{

/* On met la totalité du fichier dans un variable */
StreamReader sr = new StreamReader(fichier, ASCIIEncoding.Default);
string s = sr.ReadToEnd();
sr.Close();

/* On trouve ou est placé la variable dans le fichier */
int i = s.IndexOf(variable);

/* On trouve la fin de la ligne de cette variable */
int n = s.IndexOf("\r\n", i);

/* On récupère la chaine dans la variable p */
string p = s.Substring(i, n - i);

/* Enfon on remplace p par la variable + valeur donnée */
s = s.Replace(p, variable + " : " + valeur);
StreamWriter sw = new StreamWriter(fichier, false, ASCIIEncoding.Default);
sw.Write(s);
sw.Close();
}

}  

Testé et approuvée !

Commentaire de dadavidou2005 le 04/08/2004 17:34:19

J'ai juste oublié de faire une petite correction.

Dans la fonction EcrireFile :

il faut écrire :

public int EcrireFile(string fichier, string variable, string valeur)

au lieu de :

public void EcrireFile(string fichier, string variable, string valeur)

Mille excuses.

Commentaire de Lucky Hal le 19/02/2005 16:29:04

bon, je ne sait pas si c'est moi mais ASCIIEncoding.Default je suis obliger de le supprimer parceque sinon rien ne marche...
Ensuite j'ai eu pas mal de problemes avec les FileStream, donc je les ait supprimer et pour les streamreader, j'ai mis :
StreamReader sr = new StreamReader(fichier_ini);
où fichier_ini est une string qui contient le nom du fichier a ouvrir
et pour les streamwriter j'ai mis :
StreamWriter Sw = new StreamWriter(fichier_ini, false);

J'arrive a formatter mon fichier comme je veut mais je voudrait savoir si ce n'est pas dangeureux de ne pas utiliser les ASCIIEncoding.Default et les Filestream parceque l'appli que je developpe doit gerer des comptes de clients et il me faut du code robuste...
Merci de me repondre
PS : Grace a vous, j'ai gagner du temps de lecture dans mes 12 pavé sur le C#

Commentaire de yoannd le 02/10/2007 15:31:44

Si je puis me permettre, pour la lecture d'un fichier, il faut mieux utiliser des try catch, non ? Vérifier qu'un fichier existe [if (fi.Exists)], c'est bien, mais cela ne garantit pas que le fichier est accessible en lecture par windows : un vérou peut être posé sur le fichier car un autre process accède au fichier en écriture.

Voila ma solution :
FileStream fs = null;
try{
fs = new FileStream("NomDuFichier", FileMode.Open);
StreamReader reader = new StreamReader(fs);
string contenuFichier = reader.ReadToEnd();
}catch(FileNotFoundException fnfEx){
// A faire si le fichier n'existe pas
}catch(Exception ex){
// A faire pour le reste des exceptions
}

Commentaire de yoannd le 02/10/2007 15:44:23

Pardon, rectification de mon précédent post, mais cette fois avec la fermeture du fichier (c'est mieux) :

FileStream fs = null;
try{
fs = new FileStream("NomDuFichier", FileMode.Open);
StreamReader reader = new StreamReader(fs);
string contenuFichier = reader.ReadToEnd();
}catch(FileNotFoundException fnfEx){
// A faire si le fichier n'existe pas
}catch(Exception ex){
// A faire pour le reste des exceptions
}finally{
if(fs != null) fs.Close();
}

Commentaire de yoannd le 03/10/2007 11:12:35

J'ai mis cet cet exemple dans un tutorial que vous retrouverez ici :
http://csharpfr.com/tutoriaux/GESTION-EXCEPTION-LECTURE-FICHIER-DIRECTIVE-PRECOMPILATION_749.aspx

Bonne lecture !

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Modification à distance d'un fichier XML [ par zigxag ] Bonjour,Depuis mon Smartphone, je voudrais écrire dans un fichier XML qui se trouve sur le serveur distant, via des Web Methods. Or, le systeme m Modification de fichier texte [ par le_soissonais ] Bonjour a tous,Voila mon probleme, en fait je recupere un fichier texte venant de Sage 100 par FTP. Suite a ça je le translate dans un format précis a Modification XML [ par fdouieb ] BonjourSuite à la source "http://www.csharpfr.com/code.aspx?ID=26507"qui permet de generer un fichier ".Ini". J'ai decidé de faire comme la plupart l' Modification de taille de fichier [ par rossjulian ] Bonjour tout le monde,j'ai un problème car je n'arrive pas a modifier la taille du fichier. A l'execution, j'ai cette erreur :ligne ou j'ai l'err Modification d'un fichier XML avec classe C# [ par dahu17 ] Bonjour a tous,Je souhaiterais ouvrir un fichier XML et surtout modifier et ajouter des "Node" et tout ça en C#. Je débute et je voudrais connaitre le pb date de dernière modification fichier [ par papat2006 ] Bonjour,Mon pb est le suivant :Je souhaite créer par programme les fichiers thumbs.db de ma machine. A l'interieur, pour chaque miniature, il faut enr Détecter modification d'un fichier [ par Jordan59 ] Bonsoir à tous, Je souhaite développer une appli permettant l'archivage des fichiers d'un répertoire et pour cela j'ai besoin de détecter la modifica Lecture, Modification du résumé d'un fichier [ par zak2zouk ] Bonjour tout le monde.Je cherche à lire et à modifier dans un programme le contenu de la fenêtre résumé que l'on a sur tous les types de fichier. Par Modifier info dans un fichier XML [ par romauto750 ] Bonjour à tous,Peut être une question simple mais qui me pose problème. Je débute avec le XML et j'aimerai modifier un élément à l'intérieur de celui modification d'un fichier XML sous C# [ par ronaldoccr9 ] bonjour à tous, je suis entrain de réaliser une application de gestion bancaire sous C# en utilisant XML,je vous modifier un compte déjà existant mais


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales