F # - E / S de base

Entrée de base La sortie comprend -

  • Lecture et écriture dans la console.
  • Lecture et écriture dans un fichier.

Module Core.Printf

Nous avons utilisé les fonctions printf et printfn pour écrire dans la console. Dans cette section, nous examinerons les détails de laPrintf module de F #.

En dehors des fonctions ci-dessus, le module Core.Printf de F # dispose de diverses autres méthodes d'impression et de formatage en utilisant des marqueurs% comme espaces réservés. Le tableau suivant montre les méthodes avec une brève description -

Valeur La description
bprintf: StringBuilder → BuilderFormat <'T> →' T Imprime sur un StringBuilder.
eprintf: TextWriterFormat <'T> →' T Imprime la sortie formatée sur stderr.
eprintfn: TextWriterFormat <'T> →' T Imprime la sortie formatée sur stderr, en ajoutant une nouvelle ligne.
failwithf: StringFormat <'T,' Résultat> → 'T Imprime dans un tampon de chaîne et déclenche une exception avec le résultat donné.
fprintf: TextWriter → TextWriterFormat <'T> →' T Imprime à un rédacteur de texte.
fprintfn: TextWriter → TextWriterFormat <'T> →' T Imprime sur un rédacteur de texte, en ajoutant une nouvelle ligne.
kbprintf: (unité → 'Résultat) → StringBuilder → BuilderFormat <' T, 'Résultat> →' T Comme bprintf, mais appelle la fonction spécifiée pour générer le résultat.
kfprintf: (unité → 'Résultat) → TextWriter → TextWriterFormat <' T, 'Résultat> →' T Comme fprintf, mais appelle la fonction spécifiée pour générer le résultat.
kprintf: (chaîne → 'Résultat) → StringFormat <' T, 'Résultat> →' T Comme printf, mais appelle la fonction spécifiée pour générer le résultat. Par exemple, ceux-ci laissent la force d'impression un flush après que toutes les sorties ont été entrées sur le canal, mais pas avant.
ksprintf: (chaîne → 'Résultat) → StringFormat <' T, 'Résultat> →' T Comme sprintf, mais appelle la fonction spécifiée pour générer le résultat.
printf: TextWriterFormat <'T> →' T Imprime la sortie formatée sur stdout.
printfn: TextWriterFormat <'T> →' T Imprime la sortie formatée sur stdout, en ajoutant une nouvelle ligne.
sprintf: StringFormat <'T> →' T Imprime dans une chaîne à l'aide d'un tampon de chaîne interne et renvoie le résultat sous forme de chaîne.

Spécifications de format

Les spécifications de format sont utilisées pour formater l'entrée ou la sortie, selon les besoins des programmeurs.

Ce sont des chaînes avec des marqueurs% indiquant les espaces réservés de format.

La syntaxe d'un espace réservé de format est -

%[flags][width][.precision][type]

le type est interprété comme -

Type La description
% b Formats un bool, formaté comme true ou false.
% c Formate un caractère.
% s Formats un string, formaté comme son contenu, sans interpréter les caractères d'échappement.
% d,% i Formate tout type entier de base mis en forme comme un entier décimal, signé si le type entier de base est signé.
% u Formate tout type d'entier de base mis en forme comme un entier décimal non signé.
%X Formate tout type d'entier de base mis en forme comme un entier hexadécimal non signé, en utilisant les lettres minuscules de a à f.
%X Formate tout type d'entier de base mis en forme comme un entier hexadécimal non signé, en utilisant les lettres majuscules A à F.
% o Formate tout type d'entier de base mis en forme comme un entier octal non signé.
% e,% E,% f,% F,% g,% G Formate tout type de base à virgule flottante (float, float32) formaté en utilisant des spécifications de format à virgule flottante de style C.
% e,% E Formate une valeur signée de la forme [-] d.dddde [signe] ddd où d est un seul chiffre décimal, dddd est un ou plusieurs chiffres décimaux, ddd est exactement trois chiffres décimaux et le signe est + ou -.
%F Formate une valeur signée de la forme [-] dddd.dddd, où dddd est un ou plusieurs chiffres décimaux. Le nombre de chiffres avant la virgule décimale dépend de l'amplitude du nombre, et le nombre de chiffres après la virgule décimale dépend de la précision demandée.
% g,% G Formate une valeur signée imprimée au format f ou e, selon ce qui est le plus compact pour la valeur et la précision données.
% M Formate une valeur décimale.
% O Formate toute valeur, imprimée en encadrant l'objet et en utilisant son ToString méthode.
% A,% + A Formate toute valeur, imprimée avec les paramètres de mise en page par défaut. Utilisez% + A pour imprimer la structure des syndicats discriminés avec des représentations internes et privées.
%une

Un spécificateur de format général nécessite deux arguments. Le premier argument est une fonction qui accepte deux arguments: d'abord, un paramètre de contexte du type approprié pour la fonction de mise en forme donnée (par exemple, un TextWriter), et deuxièmement, une valeur à imprimer et qui génère ou renvoie le texte approprié.

Le deuxième argument est la valeur particulière à imprimer.

% t Un spécificateur de format général nécessite un argument: une fonction qui accepte un paramètre de contexte du type approprié pour la fonction de mise en forme donnée (aTextWriter) et qui génère ou renvoie le texte approprié. Les types entiers de base sontbyte, sbyte, int16, uint16, int32, uint32, int64, uint64, nativeint, et unativeint. Les types à virgule flottante de base sont float et float32.

le widthest un paramètre facultatif. C'est un entier qui indique la largeur minimale du résultat. Par exemple,% 5d imprime un entier avec au moins des espaces de 5 caractères.

Valide flags sont décrits dans le tableau suivant -

Valeur La description
0 Spécifie d'ajouter des zéros au lieu d'espaces pour créer la largeur requise.
- Spécifie de justifier à gauche le résultat dans la largeur spécifiée.
+ Spécifie d'ajouter un caractère + si le nombre est positif (pour correspondre au signe - pour les nombres négatifs).
' ' (espace) Spécifie d'ajouter un espace supplémentaire si le nombre est positif (pour correspondre au signe - pour les nombres négatifs).
# Invalide.

Exemple

printf "Hello "
printf "World"
printfn ""
printfn "Hello "
printfn "World"
printf "Hi, I'm %s and I'm a %s" "Rohit" "Medical Student"

printfn "d: %f" 212.098f
printfn "e: %f" 504.768f

printfn "x: %g" 212.098f
printfn "y: %g" 504.768f

printfn "x: %e" 212.098f
printfn "y: %e" 504.768f
printfn "True: %b" true

Lorsque vous compilez et exécutez le programme, il produit la sortie suivante -

Hello World
Hello
World
Hi, I'm Rohit and I'm a Medical Studentd: 212.098000
e: 504.768000
x: 212.098
y: 504.768
x: 2.120980e+002
y: 5.047680e+002
True: true

La classe console

Cette classe fait partie du framework .NET. Il représente les flux d'entrée, de sortie et d'erreur standard pour les applications de console.

Il fournit diverses méthodes pour lire et écrire dans la console. Le tableau suivant montre les méthodes -

Méthode La description
Bip() Joue le son d'un bip via le haut-parleur de la console.
Bip (Int32, Int32) Reproduit le son d'un bip d'une fréquence et d'une durée spécifiées via le haut-parleur de la console.
Clair Efface la mémoire tampon de la console et la fenêtre de console correspondante des informations d'affichage.
MoveBufferArea (Int32, Int32, Int32, Int32, Int32, Int32) Copie une zone source spécifiée de la mémoire tampon d'écran vers une zone de destination spécifiée.
MoveBufferArea (Int32, Int32, Int32, Int32, Int32, Int32, Char, ConsoleColor, ConsoleColor) Copie une zone source spécifiée de la mémoire tampon d'écran vers une zone de destination spécifiée.
OpenStandardError () Acquiert le flux d'erreur standard.
OpenStandardError (Int32) Acquiert le flux d'erreur standard, qui est défini sur une taille de tampon spécifiée.
OpenStandardInput () Acquiert le flux d'entrée standard.
OpenStandardInput (Int32) Acquiert le flux d'entrée standard, qui est défini sur une taille de tampon spécifiée.
OpenStandardOutput () Acquiert le flux de sortie standard.
OpenStandardOutput (Int32) Acquiert le flux de sortie standard, qui est défini sur une taille de tampon spécifiée.
Lis Lit le caractère suivant du flux d'entrée standard.
ReadKey () Obtient le caractère suivant ou la touche de fonction pressée par l'utilisateur. La touche enfoncée s'affiche dans la fenêtre de la console.
ReadKey (booléen) Obtient le caractère suivant ou la touche de fonction pressée par l'utilisateur. La touche enfoncée est éventuellement affichée dans la fenêtre de la console.
ReadLine Lit la prochaine ligne de caractères du flux d'entrée standard.
Réinitialiser la couleur Définit les couleurs de la console de premier plan et d'arrière-plan sur leurs valeurs par défaut.
SetBufferSize Définit la hauteur et la largeur de la zone tampon de l'écran sur les valeurs spécifiées.
SetCursorPosition Définit la position du curseur.
SetError Définit la propriété Error sur l' objet TextWriter spécifié .
S'installer Définit la propriété In sur l' objet TextReader spécifié .
Partir planifier Définit la propriété Out sur l' objet TextWriter spécifié .
SetWindowPosition Définit la position de la fenêtre de la console par rapport au tampon d'écran.
SetWindowSize Définit la hauteur et la largeur de la fenêtre de la console sur les valeurs spécifiées.
Écrire (booléen) Écrit la représentation textuelle de la valeur booléenne spécifiée dans le flux de sortie standard.
Ecrire (Char) Écrit la valeur de caractère Unicode spécifiée dans le flux de sortie standard.
Écrire (Char []) Écrit le tableau spécifié de caractères Unicode dans le flux de sortie standard.
Ecrire (décimal) Écrit la représentation textuelle de la valeur Decimal spécifiée dans le flux de sortie standard.
Écrire (double) Écrit la représentation textuelle de la valeur à virgule flottante double précision spécifiée dans le flux de sortie standard.
Ecrire (Int32) Écrit la représentation textuelle de la valeur entière signée 32 bits spécifiée dans le flux de sortie standard.
Ecrire (Int64) Écrit la représentation textuelle de la valeur entière signée 64 bits spécifiée dans le flux de sortie standard.
Ecrire (objet) Écrit la représentation textuelle de l'objet spécifié dans le flux de sortie standard.
Ecrire (unique) Écrit la représentation textuelle de la valeur à virgule flottante simple précision spécifiée dans le flux de sortie standard.
Écrire (chaîne) Écrit la valeur de chaîne spécifiée dans le flux de sortie standard.
Ecrire (UInt32) Écrit la représentation textuelle de la valeur entière non signée 32 bits spécifiée dans le flux de sortie standard.
Ecrire (UInt64) Écrit la représentation textuelle de la valeur entière non signée 64 bits spécifiée dans le flux de sortie standard.
Écrire (chaîne, objet) Écrit la représentation textuelle de l'objet spécifié dans le flux de sortie standard à l'aide des informations de format spécifiées.
Écriture (chaîne, objet []) Écrit la représentation textuelle du tableau d'objets spécifié dans le flux de sortie standard à l'aide des informations de format spécifiées.
Écriture (Char [], Int32, Int32) Écrit le sous-tableau spécifié de caractères Unicode dans le flux de sortie standard.
Écriture (chaîne, objet, objet) Écrit la représentation textuelle des objets spécifiés dans le flux de sortie standard à l'aide des informations de format spécifiées.
Écriture (chaîne, objet, objet, objet) Écrit la représentation textuelle des objets spécifiés dans le flux de sortie standard à l'aide des informations de format spécifiées.
Écriture (chaîne, objet, objet, objet, objet) Écrit la représentation textuelle des objets spécifiés et de la liste de paramètres de longueur variable dans le flux de sortie standard à l'aide des informations de format spécifiées.
WriteLine () Écrit le terminateur de ligne actuel dans le flux de sortie standard.
WriteLine (booléen) Écrit la représentation textuelle de la valeur booléenne spécifiée, suivie de la terminaison de ligne actuelle, dans le flux de sortie standard.
WriteLine (car) Écrit la valeur du caractère Unicode spécifié, suivi de la fin de ligne actuelle, dans le flux de sortie standard.
WriteLine (Char []) Écrit le tableau spécifié de caractères Unicode, suivi du terminateur de ligne actuel, dans le flux de sortie standard.
WriteLine (décimal) Écrit la représentation textuelle de la valeur Decimal spécifiée, suivie du terminateur de ligne actuel, dans le flux de sortie standard.
WriteLine (Double) Écrit la représentation textuelle de la valeur à virgule flottante double précision spécifiée, suivie de la terminaison de ligne actuelle, dans le flux de sortie standard.
WriteLine (Int32) Écrit la représentation textuelle de la valeur entière signée 32 bits spécifiée, suivie de la terminaison de ligne actuelle, dans le flux de sortie standard.
WriteLine (Int64) Écrit la représentation textuelle de la valeur entière signée 64 bits spécifiée, suivie de la fin de ligne actuelle, dans le flux de sortie standard.
WriteLine (objet) Écrit la représentation textuelle de l'objet spécifié, suivie de la terminaison de ligne actuelle, dans le flux de sortie standard.
WriteLine (unique) Écrit la représentation textuelle de la valeur à virgule flottante simple précision spécifiée, suivie de la terminaison de ligne actuelle, dans le flux de sortie standard.
WriteLine (chaîne) Écrit la valeur de chaîne spécifiée, suivie du terminateur de ligne actuel, dans le flux de sortie standard.
WriteLine (UInt32) Écrit la représentation textuelle de la valeur entière non signée 32 bits spécifiée, suivie de la fin de ligne actuelle, dans le flux de sortie standard.
WriteLine (UInt64) Écrit la représentation textuelle de la valeur entière non signée 64 bits spécifiée, suivie de la fin de ligne actuelle, dans le flux de sortie standard.
WriteLine (chaîne, objet) Écrit la représentation textuelle de l'objet spécifié, suivie de la terminaison de ligne actuelle, dans le flux de sortie standard à l'aide des informations de format spécifiées.
WriteLine (chaîne, objet []) Écrit la représentation textuelle du tableau d'objets spécifié, suivie de la terminaison de ligne actuelle, dans le flux de sortie standard à l'aide des informations de format spécifiées.
WriteLine (Char [], Int32, Int32) Écrit le sous-tableau spécifié de caractères Unicode, suivi du terminateur de ligne actuel, dans le flux de sortie standard.
WriteLine (chaîne, objet, objet) Écrit la représentation textuelle des objets spécifiés, suivie de la terminaison de ligne actuelle, dans le flux de sortie standard à l'aide des informations de format spécifiées.
WriteLine (chaîne, objet, objet, objet) Écrit la représentation textuelle des objets spécifiés, suivie de la terminaison de ligne actuelle, dans le flux de sortie standard à l'aide des informations de format spécifiées.
WriteLine (chaîne, objet, objet, objet, objet) Écrit la représentation textuelle des objets spécifiés et de la liste de paramètres de longueur variable, suivie du terminateur de ligne actuel, dans le flux de sortie standard à l'aide des informations de format spécifiées.

L'exemple suivant montre comment lire à partir de la console et y écrire -

Exemple

open System
let main() =
   Console.Write("What's your name? ")
   let name = Console.ReadLine()
   Console.Write("Hello, {0}\n", name)
   Console.WriteLine(System.String.Format("Big Greetings from {0} and {1}", "TutorialsPoint", "Absoulte Classes"))
   Console.WriteLine(System.String.Format("|{0:yyyy-MMM-dd}|", System.DateTime.Now))
main()

Lorsque vous compilez et exécutez le programme, il produit la sortie suivante -

What's your name? Kabir
Hello, Kabir
Big Greetings from TutorialsPoint and Absoulte Classes
|2015-Jan-05|

L'espace de noms System.IO

L'espace de noms System.IO contient une variété de classes utiles pour effectuer des E / S de base.

Il contient des types ou classes qui permettent la lecture et l'écriture dans des fichiers et des flux de données et des types qui fournissent une prise en charge de base des fichiers et des répertoires.

Classes utiles pour travailler avec le système de fichiers -

  • La classe System.IO.File est utilisée pour créer, ajouter et supprimer des fichiers.
  • La classe System.IO.Directory est utilisée pour créer, déplacer et supprimer des répertoires.
  • La classe System.IO.Path effectue des opérations sur les chaînes, qui représentent les chemins de fichiers.
  • La classe System.IO.FileSystemWatcher permet aux utilisateurs d'écouter un répertoire pour les modifications.

Classes utiles pour travailler avec les flux (séquence d'octets) -

  • La classe System.IO.StreamReader est utilisée pour lire les caractères d'un flux.
  • La classe System.IO.StreamWriter est utilisée pour écrire des caractères dans un flux.
  • La classe System.IO.MemoryStream crée un flux d'octets en mémoire.

Le tableau suivant montre toutes les classes fournies dans l'espace de noms avec une brève description -

Classe La description
BinaryReader Lit les types de données primitifs sous forme de valeurs binaires dans un codage spécifique.
BinaryWriter Écrit des types primitifs en binaire dans un flux et prend en charge l'écriture de chaînes dans un codage spécifique.
BufferedStream Ajoute une couche tampon pour lire et écrire des opérations sur un autre flux.
Annuaire Expose des méthodes statiques pour créer, déplacer et énumérer dans les répertoires et sous-répertoires.
DirectoryInfo Expose des méthodes d'instance pour créer, déplacer et énumérer dans les répertoires et sous-répertoires.
DirectoryNotFoundException L'exception qui est levée lorsqu'une partie d'un fichier ou d'un répertoire est introuvable.
DriveInfo Donne accès aux informations sur un lecteur.
DriveNotFoundException Exception levée lors de la tentative d'accès à un lecteur ou à un partage qui n'est pas disponible.
EndOfStreamException L'exception qui est levée lors de la lecture est tentée après la fin d'un flux.
ErrorEventArgs Fournit des données pour l'événement FileSystemWatcher.Error.
Fichier Fournit des méthodes statiques pour la création, la copie, la suppression, le déplacement et l'ouverture d'un seul fichier, et facilite la création d'objets FileStream.
FileFormatException L'exception qui est levée lorsqu'un fichier d'entrée ou un flux de données censé se conformer à une certaine spécification de format de fichier est mal formé.
FileInfo Fournit des propriétés et des méthodes d'instance pour la création, la copie, la suppression, le déplacement et l'ouverture de fichiers et facilite la création d'objets FileStream.
FileLoadException Exception levée lorsqu'un assembly géré est trouvé mais ne peut pas être chargé.
FileNotFoundException Exception levée lorsqu'une tentative d'accès à un fichier qui n'existe pas sur le disque échoue.
FileStream Expose un Stream autour d'un fichier, prenant en charge les opérations de lecture et d'écriture synchrones et asynchrones.
FileSystemEventArgs Fournit des données pour les événements de l'annuaire - Modifié, créé, supprimé.
FileSystemInfo Fournit la classe de base pour les objets FileInfo et DirectoryInfo.
FileSystemWatcher Écoute les notifications de modification du système de fichiers et déclenche des événements lorsqu'un répertoire ou un fichier d'un répertoire change.
InternalBufferOverflowException L'exception levée lorsque le tampon interne déborde.
InvalidDataException L'exception qui est levée lorsqu'un flux de données est dans un format non valide.
IODescriptionAttribute Définit la description que les concepteurs visuels peuvent afficher lorsqu'ils référencent un événement, une extension ou une propriété.
IOException Exception levée lorsqu'une erreur d'E / S se produit.
MemoryStream Crée un flux dont le stockage de sauvegarde est la mémoire.
Chemin Effectue des opérations sur les instances String qui contiennent des informations de chemin de fichier ou de répertoire. Ces opérations sont effectuées de manière multiplateforme.
PathTooLongException Exception levée lorsqu'un chemin d'accès ou un nom de fichier est plus long que la longueur maximale définie par le système.
PipeException Lancé lorsqu'une erreur se produit dans un canal nommé.
RenamedEventArgs Fournit des données pour l'événement Renamed.
Courant Fournit une vue générique d'une séquence d'octets. Ceci est une classe abstraite.
StreamReader Implémente un TextReader qui lit les caractères d'un flux d'octets dans un encodage particulier.
StreamWriter Implémente un TextWriter pour écrire des caractères dans un flux dans un encodage particulier. Pour parcourir le code source du .NET Framework pour ce type, consultez la source de référence.
StringReader Implémente un TextReader qui lit à partir d'une chaîne.
StringWriter Implémente un TextWriter pour écrire des informations dans une chaîne. Les informations sont stockées dans un StringBuilder sous-jacent.
TextReader Représente un lecteur capable de lire une série séquentielle de caractères.
TextWriter Représente un rédacteur capable d'écrire une série séquentielle de caractères. Cette classe est abstraite.
UnmanagedMemoryAccessor Fournit un accès aléatoire aux blocs de mémoire non gérés à partir du code géré.
UnmanagedMemoryStream Fournit un accès aux blocs de mémoire non gérés à partir du code géré.
WindowsRuntimeStorageExtensions Contient des méthodes d'extension pour les interfaces IStorageFile et IStorageFolder dans Windows Runtime lors du développement d'applications Windows Store.
WindowsRuntimeStreamExtensions Contient des méthodes d'extension pour la conversion entre les flux dans Windows Runtime et les flux gérés dans les applications .NET pour Windows Store.

Exemple

L'exemple suivant crée un fichier appelé test.txt, y écrit un message, lit le texte du fichier et l'imprime sur la console.

Note - La quantité de code nécessaire pour ce faire est étonnamment moindre!

open System.IO // Name spaces can be opened just as modules
File.WriteAllText("test.txt", "Hello There\n Welcome to:\n Tutorials Point")
let msg = File.ReadAllText("test.txt")
printfn "%s" msg

Lorsque vous compilez et exécutez le programme, il produit la sortie suivante -

Hello There
Welcome to:
Tutorials Point