F # - I / O di base
L'uscita di ingresso di base include:
- Leggere e scrivere nella console.
- Leggere e scrivere su file.
Modulo Core.Printf
Abbiamo usato le funzioni printf e printfn per scrivere nella console. In questa sezione, esamineremo i dettagli diPrintf modulo di F #.
Oltre alle funzioni precedenti, il modulo Core.Printf di F # dispone di vari altri metodi per la stampa e la formattazione utilizzando% marker come segnaposto. La tabella seguente mostra i metodi con una breve descrizione:
Valore | Descrizione |
---|---|
bprintf: StringBuilder → BuilderFormat <'T> →' T | Stampa su un StringBuilder. |
eprintf: TextWriterFormat <'T> →' T | Stampa l'output formattato su stderr. |
eprintfn: TextWriterFormat <'T> →' T | Stampa l'output formattato su stderr, aggiungendo una nuova riga. |
failwithf: StringFormat <'T,' Result> → 'T | Stampa su un buffer di stringa e solleva un'eccezione con il risultato dato. |
fprintf: TextWriter → TextWriterFormat <'T> →' T | Stampa su uno scrittore di testo. |
fprintfn: TextWriter → TextWriterFormat <'T> →' T | Stampa su uno scrittore di testo, aggiungendo una nuova riga. |
kbprintf: (unità → 'Risultato) → StringBuilder → BuilderFormat <' T, 'Risultato> →' T | Come bprintf, ma chiama la funzione specificata per generare il risultato. |
kfprintf: (unità → 'Risultato) → TextWriter → TextWriterFormat <' T, 'Risultato> →' T | Come fprintf, ma chiama la funzione specificata per generare il risultato. |
kprintf: (stringa → 'Risultato) → StringFormat <' T, 'Risultato> →' T | Come printf, ma chiama la funzione specificata per generare il risultato. Ad esempio, questi consentono alla stampa di forzare un flush dopo che tutto l'output è stato immesso nel canale, ma non prima. |
ksprintf: (stringa → 'Risultato) → StringFormat <' T, 'Risultato> →' T | Come sprintf, ma chiama la funzione specificata per generare il risultato. |
printf: TextWriterFormat <'T> →' T | Stampa l'output formattato su stdout. |
printfn: TextWriterFormat <'T> →' T | Stampa l'output formattato su stdout, aggiungendo una nuova riga. |
sprintf: StringFormat <'T> →' T | Stampa su una stringa utilizzando un buffer di stringa interno e restituisce il risultato come stringa. |
Specifiche di formato
Le specifiche di formato vengono utilizzate per formattare l'input o l'output, in base alle necessità dei programmatori.
Si tratta di stringhe con marcatori% che indicano segnaposto di formato.
La sintassi dei segnaposto di formato è:
%[flags][width][.precision][type]
Il type è interpretato come -
genere | Descrizione |
---|---|
% b | Formati a bool, formattato come true o false. |
% c | Formatta un carattere. |
%S | Formati a string, formattato come contenuto, senza interpretare alcun carattere di escape. |
% d,% i | Formatta qualsiasi tipo intero di base formattato come intero decimale, con segno se il tipo intero di base è firmato. |
% u | Formatta qualsiasi tipo intero di base formattato come numero intero decimale senza segno. |
%X | Formatta qualsiasi tipo intero di base formattato come numero intero esadecimale senza segno, utilizzando lettere minuscole dalla a alla f. |
%X | Formatta qualsiasi tipo intero di base formattato come intero esadecimale senza segno, utilizzando le lettere maiuscole dalla A alla F. |
% o | Formatta qualsiasi tipo intero di base formattato come numero intero ottale senza segno. |
% e,% E,% f,% F,% g,% G | Formatta qualsiasi tipo di virgola mobile di base (float, float32) formattato utilizzando specifiche di formato a virgola mobile in stile C. |
% e,% E | Formatta un valore con segno avente la forma [-] d.dddde [segno] ddd dove d è una singola cifra decimale, dddd è una o più cifre decimali, ddd è esattamente tre cifre decimali e il segno è + o -. |
% f | Formatta un valore con segno avente la forma [-] dddd.dddd, dove dddd è una o più cifre decimali. Il numero di cifre prima della virgola decimale dipende dalla grandezza del numero e il numero di cifre dopo la virgola decimale dipende dalla precisione richiesta. |
% g,% G | Formatta un valore con segno stampato in formato f o e, a seconda di quale sia più compatto per il valore e la precisione dati. |
% M | Formatta un valore Decimal. |
% O | Formatta qualsiasi valore, stampato inscatolando l'oggetto e usando il suo ToString metodo. |
% A,% + A | Formatta qualsiasi valore, stampato con le impostazioni di layout predefinite. Usa% + A per stampare la struttura dei sindacati discriminati con rappresentazioni interne e private. |
%un | Un identificatore di formato generale richiede due argomenti. Il primo argomento è una funzione che accetta due argomenti: primo, un parametro di contesto del tipo appropriato per la funzione di formattazione data (ad esempio, un TextWriter) e secondo, un valore da stampare e che restituisce o restituisce il testo appropriato. Il secondo argomento è il valore particolare da stampare. |
% t | Un identificatore di formato generale richiede un argomento: una funzione che accetta un parametro di contesto del tipo appropriato per la funzione di formattazione data (aTextWriter) e che restituisce o restituisce il testo appropriato. I tipi interi di base sonobyte, sbyte, int16, uint16, int32, uint32, int64, uint64, nativeint, e unativeint. I tipi di virgola mobile di base sono float e float32. |
Il widthè un parametro facoltativo. È un numero intero che indica la larghezza minima del risultato. Ad esempio,% 5d stampa un numero intero con almeno spazi di 5 caratteri.
Valido flags sono descritti nella tabella seguente -
Valore | Descrizione |
---|---|
0 | Specifica di aggiungere zeri invece di spazi per ottenere la larghezza richiesta. |
- | Specifica di giustificare a sinistra il risultato entro la larghezza specificata. |
+ | Specifica di aggiungere un carattere + se il numero è positivo (per far corrispondere un segno - per i numeri negativi). |
' ' (spazio) | Specifica di aggiungere uno spazio extra se il numero è positivo (per far corrispondere un segno - per i numeri negativi). |
# | Non valido. |
Esempio
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
Quando compili ed esegui il programma, restituisce il seguente output:
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 della console
Questa classe fa parte del framework .NET. Rappresenta i flussi di input, output e errore standard per le applicazioni della console.
Fornisce vari metodi per leggere e scrivere nella console. La tabella seguente mostra i metodi:
Metodo | Descrizione |
---|---|
Beep () | Riproduce il suono di un segnale acustico attraverso l'altoparlante della console. |
Beep (Int32, Int32) | Riproduce il suono di un segnale acustico di una frequenza e una durata specificate attraverso l'altoparlante della console. |
Chiaro | Cancella il buffer della console e la finestra della console corrispondente delle informazioni di visualizzazione. |
MoveBufferArea (Int32, Int32, Int32, Int32, Int32, Int32) | Copia un'area di origine specificata del buffer dello schermo in un'area di destinazione specificata. |
MoveBufferArea (Int32, Int32, Int32, Int32, Int32, Int32, Char, ConsoleColor, ConsoleColor) | Copia un'area di origine specificata del buffer dello schermo in un'area di destinazione specificata. |
OpenStandardError () | Acquisisce il flusso di errore standard. |
OpenStandardError (Int32) | Acquisisce il flusso di errore standard, che è impostato su una dimensione del buffer specificata. |
OpenStandardInput () | Acquisisce il flusso di input standard. |
OpenStandardInput (Int32) | Acquisisce il flusso di input standard, che è impostato su una dimensione del buffer specificata. |
OpenStandardOutput () | Acquisisce il flusso di output standard. |
OpenStandardOutput (Int32) | Acquisisce il flusso di output standard, che è impostato su una dimensione del buffer specificata. |
Leggere | Legge il carattere successivo dal flusso di input standard. |
ReadKey () | Ottiene il carattere o il tasto funzione successivo premuto dall'utente. Il tasto premuto viene visualizzato nella finestra della console. |
ReadKey (booleano) | Ottiene il carattere o il tasto funzione successivo premuto dall'utente. Il tasto premuto viene visualizzato facoltativamente nella finestra della console. |
Linea di lettura | Legge la riga di caratteri successiva dal flusso di input standard. |
ResetColor | Imposta i colori di primo piano e di sfondo della console sui valori predefiniti. |
SetBufferSize | Imposta l'altezza e la larghezza dell'area del buffer dello schermo sui valori specificati. |
SetCursorPosition | Imposta la posizione del cursore. |
SetError | Imposta la proprietà Error sull'oggetto TextWriter specificato . |
SetIn | Imposta la proprietà In sull'oggetto TextReader specificato . |
SetOut | Imposta la proprietà Out sull'oggetto TextWriter specificato . |
SetWindowPosition | Imposta la posizione della finestra della console rispetto al buffer dello schermo. |
SetWindowSize | Imposta l'altezza e la larghezza della finestra della console sui valori specificati. |
Scrivi (booleano) | Scrive la rappresentazione testuale del valore booleano specificato nel flusso di output standard. |
Scrivi (carattere) | Scrive il valore del carattere Unicode specificato nel flusso di output standard. |
Scrivi (Char []) | Scrive la matrice specificata di caratteri Unicode nel flusso di output standard. |
Scrivi (decimale) | Scrive la rappresentazione testuale del valore Decimal specificato nel flusso di output standard. |
Scrivi (doppia) | Scrive la rappresentazione testuale del valore a virgola mobile e precisione doppia specificato nel flusso di output standard. |
Scrivi (Int32) | Scrive la rappresentazione testuale del valore intero con segno a 32 bit specificato nel flusso di output standard. |
Scrivi (Int64) | Scrive la rappresentazione testuale del valore intero con segno a 64 bit specificato nel flusso di output standard. |
Scrivi (oggetto) | Scrive la rappresentazione testuale dell'oggetto specificato nel flusso di output standard. |
Scrivi (singolo) | Scrive la rappresentazione testuale del valore a virgola mobile a precisione singola specificato nel flusso di output standard. |
Scrivi (stringa) | Scrive il valore di stringa specificato nel flusso di output standard. |
Scrivi (UInt32) | Scrive la rappresentazione testuale del valore intero senza segno a 32 bit specificato nel flusso di output standard. |
Scrivi (UInt64) | Scrive la rappresentazione testuale del valore intero senza segno a 64 bit specificato nel flusso di output standard. |
Scrivi (stringa, oggetto) | Scrive la rappresentazione testuale dell'oggetto specificato nel flusso di output standard utilizzando le informazioni sul formato specificate. |
Scrivi (String, Object []) | Scrive la rappresentazione testuale della matrice di oggetti specificata nel flusso di output standard utilizzando le informazioni sul formato specificate. |
Scrivi (Char [], Int32, Int32) | Scrive il sottoarray specificato di caratteri Unicode nel flusso di output standard. |
Scrivi (stringa, oggetto, oggetto) | Scrive la rappresentazione testuale degli oggetti specificati nel flusso di output standard utilizzando le informazioni sul formato specificate. |
Scrivi (stringa, oggetto, oggetto, oggetto) | Scrive la rappresentazione testuale degli oggetti specificati nel flusso di output standard utilizzando le informazioni sul formato specificate. |
Scrivi (stringa, oggetto, oggetto, oggetto, oggetto) | Scrive la rappresentazione testuale degli oggetti specificati e l'elenco di parametri di lunghezza variabile nel flusso di output standard utilizzando le informazioni sul formato specificato. |
Linea di scrittura() | Scrive il terminatore di riga corrente nel flusso di output standard. |
WriteLine (Boolean) | Scrive la rappresentazione testuale del valore booleano specificato, seguita dal terminatore di riga corrente, nel flusso di output standard. |
WriteLine (Char) | Scrive il carattere Unicode specificato, seguito dal terminatore di riga corrente, valore nel flusso di output standard. |
WriteLine (Char []) | Scrive la matrice specificata di caratteri Unicode, seguita dal terminatore di riga corrente, nel flusso di output standard. |
WriteLine (decimale) | Scrive la rappresentazione testuale del valore Decimal specificato, seguita dal terminatore di riga corrente, nel flusso di output standard. |
WriteLine (Double) | Scrive la rappresentazione testuale del valore a virgola mobile e precisione doppia specificato, seguita dal terminatore di riga corrente, nel flusso di output standard. |
WriteLine (Int32) | Scrive la rappresentazione testuale del valore intero con segno a 32 bit specificato, seguita dal terminatore di riga corrente, nel flusso di output standard. |
WriteLine (Int64) | Scrive la rappresentazione testuale del valore intero con segno a 64 bit specificato, seguita dal terminatore di riga corrente, nel flusso di output standard. |
WriteLine (oggetto) | Scrive la rappresentazione testuale dell'oggetto specificato, seguita dal terminatore di riga corrente, nel flusso di output standard. |
WriteLine (Single) | Scrive la rappresentazione testuale del valore a virgola mobile a precisione singola specificato, seguita dal terminatore di riga corrente, nel flusso di output standard. |
WriteLine (stringa) | Scrive il valore di stringa specificato, seguito dal terminatore di riga corrente, nel flusso di output standard. |
WriteLine (UInt32) | Scrive la rappresentazione testuale del valore intero senza segno a 32 bit specificato, seguito dal terminatore di riga corrente, nel flusso di output standard. |
WriteLine (UInt64) | Scrive la rappresentazione testuale del valore intero senza segno a 64 bit specificato, seguito dal terminatore di riga corrente, nel flusso di output standard. |
WriteLine (String, Object) | Scrive la rappresentazione testuale dell'oggetto specificato, seguita dal terminatore di riga corrente, nel flusso di output standard utilizzando le informazioni sul formato specificato. |
WriteLine (String, Object []) | Scrive la rappresentazione testuale della matrice di oggetti specificata, seguita dal terminatore di riga corrente, nel flusso di output standard utilizzando le informazioni sul formato specificato. |
WriteLine (Char [], Int32, Int32) | Scrive la sottostruttura specificata di caratteri Unicode, seguita dal terminatore di riga corrente, nel flusso di output standard. |
WriteLine (String, Object, Object) | Scrive la rappresentazione testuale degli oggetti specificati, seguita dal terminatore di riga corrente, nel flusso di output standard utilizzando le informazioni sul formato specificato. |
WriteLine (String, Object, Object, Object) | Scrive la rappresentazione testuale degli oggetti specificati, seguita dal terminatore di riga corrente, nel flusso di output standard utilizzando le informazioni sul formato specificato. |
WriteLine (String, Object, Object, Object, Object) | Scrive la rappresentazione testuale degli oggetti specificati e l'elenco dei parametri di lunghezza variabile, seguita dal terminatore di riga corrente, nel flusso di output standard utilizzando le informazioni sul formato specificato. |
L'esempio seguente mostra la lettura dalla console e la scrittura in essa:
Esempio
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()
Quando compili ed esegui il programma, restituisce il seguente output:
What's your name? Kabir
Hello, Kabir
Big Greetings from TutorialsPoint and Absoulte Classes
|2015-Jan-05|
Lo spazio dei nomi System.IO
Lo spazio dei nomi System.IO contiene una varietà di classi utili per eseguire operazioni di I / O di base.
Contiene tipi o classi che consentono la lettura e la scrittura su file e flussi di dati e tipi che forniscono supporto di base per file e directory.
Classi utili per lavorare con il file system -
- La classe System.IO.File viene utilizzata per creare, aggiungere ed eliminare file.
- La classe System.IO.Directory viene utilizzata per creare, spostare ed eliminare le directory.
- La classe System.IO.Path esegue operazioni sulle stringhe, che rappresentano i percorsi dei file.
- La classe System.IO.FileSystemWatcher consente agli utenti di ascoltare le modifiche in una directory.
Classi utili per lavorare con i flussi (sequenza di byte) -
- La classe System.IO.StreamReader viene utilizzata per leggere i caratteri da un flusso.
- La classe System.IO.StreamWriter viene utilizzata per scrivere caratteri in un flusso.
- La classe System.IO.MemoryStream crea un flusso di byte in memoria.
La tabella seguente mostra tutte le classi fornite nello spazio dei nomi insieme a una breve descrizione:
Classe | Descrizione |
---|---|
BinaryReader | Legge i tipi di dati primitivi come valori binari in una codifica specifica. |
BinaryWriter | Scrive tipi primitivi in binario in un flusso e supporta la scrittura di stringhe in una codifica specifica. |
BufferedStream | Aggiunge un livello di buffering per leggere e scrivere operazioni su un altro flusso. |
Directory | Espone metodi statici per creare, spostare ed enumerare directory e sottodirectory. |
DirectoryInfo | Espone i metodi di istanza per la creazione, lo spostamento e l'enumerazione di directory e sottodirectory. |
DirectoryNotFoundException | Eccezione generata quando non è possibile trovare una parte di un file o di una directory. |
DriveInfo | Fornisce accesso alle informazioni su un'unità. |
DriveNotFoundException | Eccezione generata quando si tenta di accedere a un'unità o una condivisione non disponibile. |
EndOfStreamException | Eccezione generata quando si tenta di leggere oltre la fine di un flusso. |
ErrorEventArgs | Fornisce dati per l'evento FileSystemWatcher.Error. |
File | Fornisce metodi statici per la creazione, la copia, l'eliminazione, lo spostamento e l'apertura di un singolo file e aiuta nella creazione di oggetti FileStream. |
FileFormatException | L'eccezione generata quando un file di input o un flusso di dati che dovrebbe essere conforme a una determinata specifica di formato di file non è corretto. |
FileInfo | Fornisce proprietà e metodi di istanza per la creazione, la copia, l'eliminazione, lo spostamento e l'apertura di file e aiuta nella creazione di oggetti FileStream. |
FileLoadException | Eccezione generata quando viene trovato un assembly gestito ma non può essere caricato. |
FileNotFoundException | Eccezione generata quando un tentativo di accedere a un file che non esiste su disco fallisce. |
FileStream | Espone un flusso attorno a un file, supportando operazioni di lettura e scrittura sia sincrone che asincrone. |
FileSystemEventArgs | Fornisce dati per gli eventi della directory: modificati, creati, eliminati. |
FileSystemInfo | Fornisce la classe base per gli oggetti FileInfo e DirectoryInfo. |
FileSystemWatcher | Ascolta le notifiche di modifica del file system e genera eventi quando una directory, o un file in una directory, cambia. |
InternalBufferOverflowException | Eccezione generata quando il buffer interno è in overflow. |
InvalidDataException | Eccezione generata quando un flusso di dati è in un formato non valido. |
IODescriptionAttribute | Imposta la descrizione che i designer di oggetti visivi possono visualizzare quando fanno riferimento a un evento, un extender o una proprietà. |
IOException | Eccezione generata quando si verifica un errore di I / O. |
MemoryStream | Crea un flusso il cui archivio di backup è la memoria. |
Sentiero | Esegue operazioni su istanze String che contengono informazioni sul percorso di file o directory. Queste operazioni vengono eseguite in modo multipiattaforma. |
PathTooLongException | Eccezione generata quando un percorso o un nome file è più lungo della lunghezza massima definita dal sistema. |
PipeException | Generato quando si verifica un errore all'interno di una named pipe. |
RenamedEventArgs | Fornisce dati per l'evento Renamed. |
Stream | Fornisce una visualizzazione generica di una sequenza di byte. Questa è una classe astratta. |
StreamReader | Implementa un TextReader che legge i caratteri da un flusso di byte in una particolare codifica. |
StreamWriter | Implementa un TextWriter per scrivere caratteri in un flusso in una particolare codifica. Per esplorare il codice sorgente di .NET Framework per questo tipo, vedere la fonte di riferimento. |
StringReader | Implementa un TextReader che legge da una stringa. |
StringWriter | Implementa un TextWriter per scrivere informazioni su una stringa. Le informazioni vengono archiviate in uno StringBuilder sottostante. |
TextReader | Rappresenta un lettore in grado di leggere una serie sequenziale di caratteri. |
TextWriter | Rappresenta uno scrittore in grado di scrivere una serie sequenziale di caratteri. Questa classe è astratta. |
UnmanagedMemoryAccessor | Fornisce accesso casuale a blocchi di memoria non gestiti dal codice gestito. |
UnmanagedMemoryStream | Fornisce accesso a blocchi di memoria non gestiti dal codice gestito. |
WindowsRuntimeStorageExtensions | Contiene metodi di estensione per le interfacce IStorageFile e IStorageFolder in Windows Runtime durante lo sviluppo di app di Windows Store. |
WindowsRuntimeStreamExtensions | Contiene metodi di estensione per la conversione tra flussi in Windows Runtime e flussi gestiti nelle app .NET per Windows Store. |
Esempio
L'esempio seguente crea un file chiamato test.txt, vi scrive un messaggio, legge il testo dal file e lo stampa sulla console.
Note - La quantità di codice necessaria per farlo è sorprendentemente inferiore!
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
Quando compili ed esegui il programma, restituisce il seguente output:
Hello There
Welcome to:
Tutorials Point