Téléchargements

Entrée-sortie du fichier c.

E/S de fichiers et de flux Cette documentation a été archivée et n'est plus conservée. Fichier et

flux d'E/S faire référence au transfert de données depuis ou vers un support de stockage. Dans le .NET Framework, les espaces de noms System.IO contiennent des types qui fournissent des opérations de lecture et d'écriture synchrones et asynchrones pour les flux et les fichiers de données. De plus, ces espaces de noms contiennent des types qui effectuent la compression et la décompression des fichiers, ainsi que des types qui assurent la communication entre les canaux et les ports série. Toutefois, cela ne devrait pas être le cas. En utilisant une notation spéciale, nous pouvons rediriger la sortie de nombreuses commandes vers des fichiers, des périphériques et même l'entrée d'autres commandes. La plupart des programmes ligne de commande qui affichent leurs résultats le font en envoyant leurs résultats à un objet appelé sortie standard. Défaut

sortie standard

dirige son contenu vers l’écran. Lorsque des résultats sont ajoutés, les nouveaux résultats sont ajoutés à la fin du fichier, allongeant ainsi le fichier à chaque fois que la commande est répétée. Si le fichier n'existe pas lorsque vous essayez d'ajouter une sortie redirigée, le fichier sera créé. De nombreuses commandes peuvent accepter l'entrée d'un objet appelé entrée standard. Par défaut, l'entrée standard reçoit son contenu du clavier, mais comme la sortie standard, elle peut être redirigée. Pour rediriger l'entrée standard à partir d'un fichier au lieu du clavier. Un fichier est une séquence d’octets ordonnée et nommée qui dispose d’un stockage persistant. Lorsque vous travaillez avec des fichiers, les chemins de répertoire, les périphériques de stockage ainsi que les noms de fichiers et de répertoires sont utilisés. Contrairement à un fichier, un flux est une séquence d'octets qui peut être utilisée pour écrire ou lire sur un périphérique de stockage auxiliaire, qui est l'un des périphériques de stockage (tels que des disques ou de la mémoire). Il existe plusieurs types de périphériques de stockage autres que les disques, et il existe plusieurs types de flux autres que

flux de fichiers , tels que les flux réseau, les flux mémoire et les flux de canalisations. dans le répertoire courant. Affiche une liste de répertoires et la quantité d'espace qu'ils consomment, triés du plus grand au plus petit. Affiche le nombre total de fichiers dans le répertoire de travail actuel et tous ses sous-répertoires.

Un type de programme souvent utilisé dans les pipelines est appelé filtres. Les filtres prennent l'entrée standard, effectuent une opération dessus et envoient les résultats à la sortie standard. Ils peuvent donc être combinés pour traiter les informations de manière puissante. Voici quelques-uns des programmes courants pouvant servir de filtres.

  • Lire et écrire gros volumes les données peuvent être gourmandes en ressources. Ces tâches doivent être effectuées de manière asynchrone si l'application veut continuer à répondre aux demandes des utilisateurs. En cas d'opérations d'E/S synchrones, le thread interface utilisateur sera bloqué jusqu’à la fin de l’opération gourmande en ressources. Lors du développement d'applications pour Windows Store 8.x utilise des E/S asynchrones pour éviter l’impression que l’application a cessé de s’exécuter.

    Effectuer des tâches à l'aide de pipelines

    Le deuxième exemple commence par une liste de données non triées avec des entrées en double.

    • Imprimez à partir de la ligne de commande.
    • Il est souvent utilisé avec des tuyaux et des filtres.
    Quand on prend le temps d’y réfléchir, un ordinateur serait complètement inutile sans en parler aux personnes qui l’utilisent. Tout comme nous avons besoin d’informations pour accomplir des tâches, les ordinateurs aussi. Et tout comme nous fournissons des informations aux autres pour qu’ils puissent effectuer des tâches, les ordinateurs le font également.

    Les noms d'éléments asynchrones contiennent Async , par exemple : , et . Utilisez ces méthodes avec mots-clés asynchrone et wait .

    Plus d'informations voir la rubrique.

    La compression est le processus de réduction de la taille d'un fichier enregistré. Le déballage est le processus d'extraction du contenu fichier compressé, ce qui le met dans un format utilisable. L'espace de noms contient des types permettant de compresser et de décompresser des fichiers et des flux.

    Ces fournitures et retours d'informations à l'ordinateur sont appelés entrées et sorties. « Entrée » est une information fournie à un ordinateur ou à un programme. La « sortie » correspond aux informations fournies par un ordinateur ou un programme. Étonnamment, le plus méthodes simples, généralement enseigné aux nouveaux programmeurs, peut aussi être le plus puissant. Rappelons qu'au début de ce texte programme de démonstration dupliqué ci-dessous.

    Si vous compilez et exécutez ce programme, la phrase suivante apparaîtra à l'écran. Cette fonctionnalité est comme une « boîte noire » qui fait les choses à votre place sans exposer les tripes à l’intérieur. À titre de précision, il est parfois pratique d'inclure des parenthèses ouvrantes et fermantes après le nom de la fonction pour nous rappeler qu'il s'agit bien d'une fonction. Cependant, généralement, une fois compris le nom de la fonction dont nous parlons, cela n’est pas nécessaire.

    Les classes suivantes sont souvent utilisées lors de la compression et de la décompression de fichiers et de flux :

    • Le stockage isolé est un mécanisme de stockage de données qui assure l'isolation et la sécurité en définissant des méthodes standardisées pour mapper le code aux données stockées. Le stockage fournit du virtuel système de fichiers, isolé par utilisateur, assembly et (éventuellement) domaine. Le stockage isolé est particulièrement utile lorsqu'une application n'est pas autorisée à accéder aux fichiers de l'utilisateur. Vous pouvez enregistrer les paramètres ou les fichiers d'une application d'une manière contrôlée par la politique de sécurité de votre ordinateur.

      Par exemple, regardons un problème. Ce que nous faisons, c'est mettre le code de format d'espace réservé dans une chaîne. Ces espaces réservés sont appelés spécificateurs de format. Et si nous voulons obtenir un certain résultat qui ressemblera à ceci. Par conséquent, pour réaliser ce qui précède, nous écrivons.

      Et puis un caractère de nouvelle ligne. Même si des panneaux indicateurs peuvent être utilisés ici, c’est un concept qui ne cadrerait pas bien avec le texte. Sur à l'heure actuelle Il est préférable de considérer cette « magie » avant de discuter des indicateurs. Application typique peut être comme ça.

      Le stockage isolé n’est pas disponible pour les applications Windows 8.x Store. Utilisez plutôt les classes de données d’application contenues dans le fichier . Pour plus d’informations, consultez Accéder aux données de l’application dans le Centre de développement Windows.

      Les classes suivantes qui implémentent le stockage isolé sont souvent utilisées :

      Le code ci-dessous générera une erreur d'exécution et le programme plantera très probablement. En effet, chaque fois que vous utilisez un spécificateur de format sur une chaîne, la variable que vous utilisez pour stocker la valeur sera un tableau, et les noms de tableaux eux-mêmes indiquent leur adresse de base et donc l'adresse de l'opérateur n'est pas requise.

      Remarque sur les saisies : Lorsque des données sont saisies au clavier, les informations ne vont pas directement vers programme en cours d'exécution. Il est d’abord stocké dans ce qu’on appelle un tampon – une petite quantité de mémoire réservée à la source d’entrée. Cela présente un inconvénient : si vous transférez votre code sur un autre ordinateur avec un compilateur différent, votre code risque de ne pas fonctionner correctement. Bien sûr, arriver à ce point implique un peu de programmation. Il suit donc de nombreuses règles de ce système d'exploitation concernant les entrées et les sorties.

        NET pour Windows 8.x Store contiennent de nombreux types de lecture et d’écriture dans des flux, mais cet ensemble ne contient pas tous les types d’E/S .NET Framework.

        Il existe quelques différences importantes à noter dans l’utilisation des E/S des applications de style Windows 8.x Store :

        • Les types spéciaux liés aux opérations sur les fichiers, tels que , et , ne sont pas inclus dans les applications .NET pour Windows 8.x Store. Utilisez plutôt les types dans l’espace de noms de l’environnement Exécution Windows, comme et .

          La sortie est générée appareil standard sortie, sortie standard. . L'entrée peut également être redirigée système opérateur, il peut donc provenir d'un autre appareil tel qu'un modem, ou il peut également provenir d'un fichier. La sortie peut être redirigée vers un autre périphérique tel qu'une imprimante ou vers un fichier. Ils ne sont pas directement lus au clavier ni affichés à l’écran.

          Eh bien, à moins que vous ne codiez votre programme pour le faire. Si vous oubliez cela, vous pourriez avoir des ennuis. Il est temps que votre code devienne plus interactif. Cette fonction récupère le caractère de entrée standard. Le compilateur vous avertit lorsque vous oubliez.

          Le stockage isolé n’est pas disponible. Utilisez plutôt les données de l’application.

        • Utiliser méthodes asynchrones, tels que et , pour empêcher le blocage du thread de l'interface utilisateur.

          Lorsque vous utilisez des classes dans un espace de noms, vous devez vous conformer aux exigences de sécurité du système d'exploitation, telles que les ACL pour contrôler l'accès aux fichiers et aux répertoires. Cette exigence s’ajoute aux autres exigences. Les listes de contrôle d’accès peuvent être gérées par programme. Pour plus d'informations, voir .

          Ce n'est que lorsque les informations sont affichées sous forme de symbole qu'elles apparaissent sous forme de texte. Exercice 4 : Écrivez un programme qui suggère trois symboles ; Par exemple. Le programme créé dans l'exercice 4 attend trois caractères. Entrée standard orienté vers le flux. Il sert à expulser un personnage vers la sortie standard.

          La fonction renvoie la valeur du caractère écrit. L'instruction de la ligne 8 est en attente de saisie. L'entrée reçue n'est pas enregistrée ; ce n'est pas nécessaire. Encore une fois, le symbole doit être placé entre guillemets simples. Une chose étrange à propos du résultat est que le dernier caractère n'est pas suivi de nouvelle ligne. Cette sortie peut donc sembler gênante sur un affichage de texte.

          Par défaut, la stratégie de sécurité n'autorise pas l'accès aux fichiers de l'ordinateur d'un utilisateur via Internet ou à partir d'applications intranet. Par conséquent, lors de la composition de votre code, n'utilisez pas de classes d'E/S qui nécessitent le chemin d'accès à un fichier physique chargé via Internet ou un intranet. Utilisez plutôt les données d’application .NET Framework ou Windows 8.x Store pour les applications classiques.

          Exercice 6 : Changement code source de l'exercice 5 pour que l'on caractère supplémentaire est sorti après ! personnage. Lorsque nous disons « Entrée », cela signifie que certaines données sont transmises au programme. L'entrée peut être donnée sous forme de fichier ou à partir de la ligne de commande.

          Quand on dit Sortie, cela signifie afficher certaines données à l'écran, dans l'imprimante ou dans n'importe quel fichier. De cette façon, les appareils tels que l'écran sont adressés de la même manière que les fichiers, et les trois fichiers suivants sont automatiquement ouverts lorsque le programme accède au clavier et à l'écran. Les pointeurs de fichiers sont un moyen d'accéder en lecture et en écriture à un fichier. Cette section explique comment lire les valeurs à l'écran et comment imprimer le résultat à l'écran.

          Les contrôles de sécurité ne sont effectués que lorsqu'un thread est créé. Par conséquent, il n’est pas recommandé d’ouvrir un flux, puis de le transmettre à des domaines de code ou d’application moins fiables.

          TitreDescription
          Contient une liste de tâches d'E/S associées aux fichiers, répertoires et flux, ainsi que des liens vers du contenu associé et des exemples pour chaque tâche.
          Décrit les avantages et les opérations de base des entrées et sorties asynchrones.
          Décrit un mécanisme de stockage de données qui offre autonomie et sécurité en définissant des méthodes standardisées pour associer le code aux données protégées.
          Décrit les opérations avec des canaux anonymes et nommés dans le .NET Framework.
          Description des fichiers mappés en mémoire qui vous permettent de placer le contenu des fichiers du disque dans mémoire virtuelle. Avec leur aide, vous pouvez apporter des changements très gros fichiers et créez une mémoire partagée pour la communication interprocessus.

          Montrer:

          Cette fonction ne lit qu'un seul caractère à la fois. Vous pouvez utiliser cette méthode en boucle si vous souhaitez lire plusieurs caractères à l'écran. Cette fonction ne place qu'un seul caractère à la fois. Vous pouvez utiliser cette méthode en boucle si vous souhaitez afficher plusieurs caractères à l'écran. Lorsque le code ci-dessus est compilé et exécuté, il attend qu'un texte soit saisi.

          Il existe de nombreuses autres options de formatage qui peuvent être utilisées en fonction des besoins. Passons maintenant à exemple simple pour mieux comprendre les concepts -. Lorsque vous saisissez du texte et appuyez sur Entrée, le programme lit l'entrée et l'affiche comme suit. Si vous fournissez « chaîne de caractères » ou « entier entier », cela sera considéré comme une entrée non valide.

  • déposer). Bien que les threads soient associés à différents appareils physiques, le comportement de tous les threads est le même. Par conséquent, les classes et méthodes d’E/S peuvent être appliquées à de nombreux types de périphériques.

    Au niveau le plus bas de la hiérarchie Fils d'E/S il y a des threads qui exploitent des octets. En effet, de nombreux périphériques sont orientés octets lors de l'exécution d'opérations d'E/S. Cependant, il est plus courant que les humains opèrent avec des symboles, c'est pourquoi des flux de caractères ont été développés, qui sont en fait des shells qui convertissent les flux d'octets en flux de caractères et vice versa. De plus, des flux ont été implémentés pour travailler avec des valeurs int -, double -, short -, qui représentent également un wrapper pour les flux d'octets, mais ne fonctionnent pas avec les valeurs elles-mêmes, mais avec leur représentation interne sous forme de binaire codes.

    Sinon, le fichier spécifié par chemin n'est pas nécessairement un fichier normal. Dans tous les cas, le port est mis en mémoire tampon par défaut. Par exemple, mais en créant deux valeurs : le port d'entrée et le port de sortie. Les deux ports sont connectés dans la mesure où ils partagent une base descripteur de fichier. Pour fichiers réguliers partage le descripteur de fichier peut prêter à confusion. Par exemple, l'utilisation d'un port n'efface pas automatiquement le tampon d'un autre port, et la lecture ou l'écriture sur un port déplace la position du fichier pour un autre port.

    Pour les fichiers normaux, utilisez des appels séparés et pour éviter toute confusion. Une tentative a été faite pour obtenir un verrouillage de fichier en utilisant les capacités de verrouillage de fichiers de la plateforme actuelle. Plusieurs processus peuvent recevoir " blocage général fichier", mais pas plus d'un processus ne peut détenir un "verrou exclusif", et les "verrous partagés" et "exclusifs" s'excluent mutuellement. Lorsque le mode est "partagé", le port doit être un port d'entrée, lorsque le mode est "exclusif", le port doit être un port de sortie.

    La partie centrale du système de streaming C# est occupée par la classe Stream dans l'espace de noms System.IO. La classe Stream représente un flux d'octets et constitue la classe de base pour toutes les autres classes de flux. De la classe Stream, les classes de flux d'octets suivantes sont dérivées :

    1. FileStream est un flux d'octets conçu pour fichier E/S
    2. BufferedStream - encapsule un flux d'octets et ajoute une mise en mémoire tampon, ce qui dans de nombreux cas améliore les performances du programme ;
    3. MemoryStream est un flux d'octets qui utilise la mémoire pour stocker des données.

    Le programmeur peut dériver le sien cours en streaming. Cependant, pour la grande majorité des applications, les threads intégrés suffisent.

    Une fois le verrou acquis, il est maintenu jusqu'à ce qu'il soit libéré ou que le port soit fermé. Selon la plateforme, les verrous peuvent être simplement consultatifs ou correspondre à des verrous obligatoires empêchant la lecture et l'écriture dans un fichier verrouillé.

    Un verrou acquis sur un port d'entrée peut être libéré via le port de sortie correspondant et vice versa. Nous utiliserons toujours des pointeurs vers ces structures. Cette fonction permet d'ouvrir et de créer des fichiers sur disque. La valeur de retour est un pointeur vers la structure. Paramètres d'entrée sont.

    Nous examinerons en détail la classe FileStream, les classes StreamWriter et StreamReader, qui sont des wrappers pour classe FileStream et vous permettant de convertir des flux d'octets en flux de caractères, ainsi que les classes BinaryWriter et BinaryReader, qui sont des wrappers pour la classe FileStream et vous permettent de convertir des flux d'octets en flux binaires pour travailler avec int -, double -, short - etc. valeurs.

    Il est important de fermer ouvrir des fichiers avant de quitter l'application. La fermeture d'un fichier enregistre les données qui se trouvent encore dans la mémoire tampon et met à jour certaines données de l'en-tête du fichier géré par le système d'exploitation. Il permet également à d'autres programmes d'ouvrir le fichier pour l'utiliser. Le plus souvent, les fichiers ne peuvent pas être utilisés par plusieurs programmes.

    Le paramètre est un pointeur vers la structure du fichier que nous voulons fermer. Cette fonction lit un caractère dans un fichier. Le paramètre est un pointeur vers la structure du fichier à lire. Cette fonction écrit un caractère dans un fichier. Cette fonction permet de vérifier si la fin du fichier a été atteinte. Très souvent, nous devons travailler séquentiellement avec toutes les valeurs stockées dans un fichier, car les boucles généralement utilisées pour lire toutes les données d'un fichier doivent rester en mémoire jusqu'à ce que la fin du fichier soit détectée.

    Flux d'octets

    Pour créer un flux d'octets associé à un fichier, un objet de la classe FileStream est créé. Dans ce cas, plusieurs constructeurs sont définis dans la classe. Le constructeur le plus couramment utilisé est celui qui ouvre un flux en lecture et/ou en écriture :

    FileStream (nom de fichier chaîne, mode FileMode)

    1. le paramètre filename spécifie le nom du fichier auquel le flux de données d'E/S sera associé ; dans ce cas, le nom de fichier définit soit chemin complet au fichier, ou le nom du fichier qui se trouve dans le dossier bin/debug de votre projet.
    2. Le paramètre mode précise le mode d'ouverture du fichier, qui peut prendre une des valeurs possibles définies par l'énumération FileMode :
      • FileMode.Append - conçu pour ajouter des données à la fin du fichier ;
      • FileMode.Create - conçu pour créer un nouveau fichier, et s'il existe un fichier du même nom, il sera d'abord supprimé ;
      • Mode Fichier. CréerNouveau- conçu pour créer un nouveau fichier, alors qu'un fichier du même nom ne devrait pas exister ;
      • FileMode.Open - conçu pour ouvrir un fichier existant ;
      • FileMode.OpenOrCreate - si le fichier existe, l'ouvre, sinon en crée un nouveau
      • FileMode.Truncate - s'ouvre fichier existant, mais tronque sa longueur à zéro

    Si la tentative d'ouverture du fichier échoue, alors l'une des exceptions est générée : FileNotFoundException - le fichier ne peut pas être ouvert en raison de son absence, IOException - le fichier ne peut pas être ouvert en raison d'une erreur d'entrée/sortie, ArgumentNullException - le nom du fichier est une valeur nulle, ArgumentException - le paramètre est en mode incorrect, SecurityException - l'utilisateur n'a pas de droits d'accès, DirectoryNotFoundException - le répertoire est incorrectement spécifié.

    Cette fonction est généralement utilisée comme test pour vérifier si ce point a été atteint. La valeur de retour est différente de zéro uniquement si la fin du fichier n'a pas été atteinte. Le paramètre est un pointeur vers la structure du fichier que nous voulons vérifier.

    Il s’agit d’une fonctionnalité héritée de l’époque de la bande magnétique. Cela signifie littéralement « rembobiner » et fait référence au rembobinage jusqu'au début d'un fichier stocké sur bande. Le paramètre est un pointeur vers la structure du fichier que nous voulons rembobiner. Cette fonction sert à lire des chaînes. Dans ce dernier cas, le symbole de retour en ligne est également lu. La valeur de retour est un pointeur vers la ligne de lecture, si elle a été lue avec succès et si la fin du fichier a été détectée ou si une erreur s'est produite.

    Une autre version du constructeur permet de restreindre l'accès en lecture seule ou en écriture seule :

    FileStream (nom de fichier chaîne, mode FileMode, FileAccess comment)

    1. les paramètres filename et mode ont le même objectif que dans version précédente designer;
    2. le paramètre how précise comment on accède au fichier et peut prendre une des valeurs définies par l'énumération FileAccess :
    1. FileAccess.Read - lecture seule ;
    2. FileAccess.Write - écriture uniquement ;
    3. FileAccess.ReadWrite - lecture et écriture.

    Une fois que le flux d'octets a établi la communication avec fichier physique Le pointeur de flux interne est défini sur l'octet de départ du fichier.

    Pour lire l'octet suivant d'un flux associé à un fichier physique, utilisez la méthode ReadByte(). Après avoir lu l'octet suivant, le pointeur interne est déplacé vers l'octet suivant du fichier. Si la fin du fichier est atteinte, la méthode ReadByte() renvoie -1.

    Pour écrire des données octet par octet dans un flux, utilisez la méthode WriteByte().

    Lorsque vous avez fini de travailler avec le fichier, vous devez le fermer. Pour ce faire, appelez simplement la méthode Close(). Une fois le dossier fermé, ils sont libérés ressources système, préalablement alloués à ce fichier, ce qui permet de les utiliser pour travailler avec d'autres fichiers.

    Regardons un exemple d'utilisation de la classe FileStream pour copier un fichier dans un autre. Mais d'abord, créons un fichier texte text.txt dans le dossier bin/debug du projet en cours. Et ajoutez-y des informations arbitraires, par exemple :

    12 456 Bonjour ! 23.67 4 : Message utilisant le système ; en utilisant System.Text ; en utilisant System.IO ; //pour travailler avec l'espace de noms de flux MyProgram ( class Program ( static void Main() ( try ( FileStream fileIn = new FileStream("text.txt", FileMode.Open, FileAccess.Read); FileStream fileOut = new FileStream("newText. txt", FileMode.Create, FileAccess.Write); int i; while ((i = fileIn.ReadByte())!=-1) ( //écrit le fichier suivant dans le flux associé au fichier fIleOut fileOut.WriteByte( (octet )i); ) fileIn.Close(); fileOut.Close( ) catch (Exception EX) ( Console.WriteLine(EX.Message); ) ) )

    Exercice. Réfléchissez à la raison pour laquelle la variable i est spécifiée type entier. Il serait possible d'indiquer type d'octet ?

    Flux de personnages

    Pour créer un flux de caractères, vous devez placer un objet de la classe Stream (par exemple, FileStream ) « à l'intérieur » de l'objet. classe StreamWriter ou un objet classe StreamReader. Dans ce cas, le flux d'octets sera automatiquement converti en flux de caractères.

    Classe StreamWriter conçu pour organiser le flux de caractères de sortie. Il définit plusieurs constructeurs. L’un d’eux s’écrit ainsi :

    StreamWriter (flux de flux);

    où le paramètre stream spécifie le nom d'un flux d'octets déjà ouvert.

    Par exemple, vous pouvez créer une instance de la classe StreamReader comme suit :

    StreamWriter fileOut=new StreamWriter(new FileStream("text.txt", FileMode.Create, FileAccess.Write));

    Ce constructeur lève une ArgumentException si le flux n'est pas ouvert pour la sortie, et une ArgumentNullException s'il est nul.

    Un autre type de constructeur permet d'ouvrir un flux directement via des appels de fichiers :

    StreamWriter(nom de la chaîne);

    où le paramètre name spécifie le nom du fichier à ouvrir.

    Par exemple, contactez à ce constructeur peut être fait comme suit :

    StreamWriter fileOut=new StreamWriter("c:\temp\t.txt");

    Et une autre variante du constructeur StreamWriter :

    StreamWriter(nom de chaîne, bool appendFlag);

    où le paramètre name spécifie le nom du fichier à ouvrir ;

    Le paramètre appendFlag peut accepter vrai- si vous devez ajouter des données à la fin du fichier, ou false - si le fichier doit être écrasé.

    Par exemple:

    StreamWriter fileOut=new StreamWriter("t.txt", true);

    Vous pouvez maintenant appeler la méthode WriteLine pour écrire des données dans le flux fileOut. Cela peut être fait comme suit :

    fileOut.WriteLine("test");

    DANS dans ce cas le mot test sera ajouté à la fin du fichier t.txt.

    Classe StreamReader conçu pour organiser le flux de caractères d’entrée. L'un de ses constructeurs ressemble à ceci :

    StreamReader (flux de flux) ;

    où le paramètre stream spécifie le nom d'un flux d'octets déjà ouvert.

    En C#, les symboles sont implémentés Encodage Unicode. Afin de pouvoir traiter fichiers texte, contenant des caractères russes créés, par exemple, dans le Bloc-notes, il est recommandé d'appeler vue suivante Constructeur StreamReader :

    StreamReader fileIn=new StreamReader("c:\temp\t.txt", Encoding.GetEncoding(1251));

    Le paramètre Encoding.GetEncoding(1251) indique que la conversion sera effectuée du code Windows-1251 (une des modifications du code ASCII contenant des caractères russes) vers Unicode. Encoding.GetEncoding(1251) est implémenté dans l'espace de noms System.Text.

    Vous pouvez désormais utiliser la méthode ReadLine pour lire les données du flux fileIn. De plus, si la fin du fichier est atteinte, la méthode ReadLine renverra null.

    Considérons un exemple dans lequel les données d'un fichier sont copiées dans un autre, mais en utilisant les classes StreamWriter et StreamReader.

    static void Main() ( StreamReader fileIn = new StreamReader("text.txt", Encoding.GetEncoding(1251)); StreamWriter fileOut=new StreamWriter("newText.txt", false); string line; while ((line=fileIn .ReadLine())!=null) //jusqu'à ce que le flux soit vide ( fileOut.WriteLine(line); ) fileIn.Close();

    Exercice. Découvrez ce que fait la méthode ReadToEnd() et quand il est judicieux de l'utiliser.

    Ainsi, cette méthode copier un fichier dans un autre nous donnera le même résultat que l'utilisation de flux d'octets. Toutefois, son travail sera moins efficace, car sera dépensé temps supplémentaire pour convertir des octets en caractères. Mais les flux de personnages ont leurs avantages. Par exemple, nous pouvons utiliser expressions régulières pour rechercher des fragments de texte spécifiés dans un fichier.

    static void Main() ( StreamReader fileIn = new StreamReader("text.txt"); StreamWriter fileOut=new StreamWriter("newText.txt", false); string text=fileIn.ReadToEnd(); Regex r= new Regex (@ "[-+]?\d+"); Correspond à un entier = r.Match(text); while (integer.Success) ( fileOut.WriteLine(integer); integer = integer.NextMatch(); ) fileIn.Close(); fileOut.Close();



    Des questions ?

    Signaler une faute de frappe

    Texte qui sera envoyé à nos rédacteurs :