F # - E / S básica
Entrada salida básica incluye:
- Leer y escribir en la consola.
- Leer y escribir en un archivo.
Módulo Core.Printf
Hemos utilizado las funciones printf y printfn para escribir en la consola. En esta sección, veremos los detalles delPrintf módulo de F #.
Además de las funciones anteriores, el módulo Core.Printf de F # tiene varios otros métodos para imprimir y formatear usando marcadores% como marcadores de posición. La siguiente tabla muestra los métodos con una breve descripción:
Valor | Descripción |
---|---|
bprintf: StringBuilder → BuilderFormat <'T> →' T | Imprime en un StringBuilder. |
eprintf: TextWriterFormat <'T> →' T | Imprime la salida formateada a stderr. |
eprintfn: TextWriterFormat <'T> →' T | Imprime la salida formateada en stderr, agregando una nueva línea. |
failwithf: StringFormat <'T,' Resultado> → 'T | Imprime en un búfer de cadena y genera una excepción con el resultado dado. |
fprintf: TextWriter → TextWriterFormat <'T> →' T | Imprime a un escritor de texto. |
fprintfn: TextWriter → TextWriterFormat <'T> →' T | Imprime a un escritor de texto, agregando una nueva línea. |
kbprintf: (unidad → 'Resultado) → StringBuilder → BuilderFormat <' T, 'Resultado> →' T | Como bprintf, pero llama a la función especificada para generar el resultado. |
kfprintf: (unidad → 'Resultado) → TextWriter → TextWriterFormat <' T, 'Resultado> →' T | Como fprintf, pero llama a la función especificada para generar el resultado. |
kprintf: (cadena → 'Resultado) → StringFormat <' T, 'Resultado> →' T | Como printf, pero llama a la función especificada para generar el resultado. Por ejemplo, estos permiten que la impresión fuerce una descarga después de que se haya ingresado toda la salida en el canal, pero no antes. |
ksprintf: (cadena → 'Resultado) → StringFormat <' T, 'Resultado> →' T | Como sprintf, pero llama a la función especificada para generar el resultado. |
printf: TextWriterFormat <'T> →' T | Imprime la salida formateada en stdout. |
printfn: TextWriterFormat <'T> →' T | Imprime la salida formateada en stdout, agregando una nueva línea. |
sprintf: StringFormat <'T> →' T | Imprime en una cadena utilizando un búfer de cadena interno y devuelve el resultado como una cadena. |
Especificaciones de formato
Las especificaciones de formato se utilizan para formatear la entrada o la salida, de acuerdo con las necesidades de los programadores.
Se trata de cadenas con marcadores% que indican marcadores de posición de formato.
La sintaxis de los marcadores de posición de formato es:
%[flags][width][.precision][type]
los type se interpreta como -
Tipo | Descripción |
---|---|
%segundo | Formatea a bool, formateado como true o false. |
%C | Formatea un personaje. |
% s | Formatea a string, formateado como su contenido, sin interpretar ningún carácter de escape. |
% d,% i | Formatea cualquier tipo de entero básico formateado como un entero decimal, firmado si el tipo de entero básico está firmado. |
% u | Formatea cualquier tipo de entero básico formateado como un entero decimal sin signo. |
%X | Formatea cualquier tipo de entero básico formateado como un entero hexadecimal sin signo, utilizando letras minúsculas de la a a la f. |
%X | Formatea cualquier tipo de entero básico formateado como un entero hexadecimal sin signo, utilizando letras mayúsculas de la A a la F. |
% o | Formatea cualquier tipo de entero básico formateado como un entero octal sin signo. |
% e,% E,% f,% F,% g,% G | Formatea cualquier tipo de punto flotante básico (float, float32) formateado utilizando especificaciones de formato de punto flotante de estilo C. |
% e,% E | Formatea un valor con signo que tiene la forma [-] d.dddde [signo] ddd donde d es un solo dígito decimal, dddd es uno o más dígitos decimales, ddd es exactamente tres dígitos decimales y el signo es + o -. |
%F | Formatea un valor con signo que tiene la forma [-] dddd.dddd, donde dddd es uno o más dígitos decimales. El número de dígitos antes del punto decimal depende de la magnitud del número y el número de dígitos después del punto decimal depende de la precisión solicitada. |
% g,% G | Formatea un valor firmado impreso en formato foe, el que sea más compacto para el valor y la precisión dados. |
%METRO | Formatea un valor decimal. |
% O | Formatea cualquier valor, imprime encajonando el objeto y usando su ToString método. |
% A,% + A | Formatea cualquier valor, impreso con la configuración de diseño predeterminada. Utilice% + A para imprimir la estructura de sindicatos discriminados con representaciones internas y privadas. |
%un | Un especificador de formato general, requiere dos argumentos. El primer argumento es una función que acepta dos argumentos: primero, un parámetro de contexto del tipo apropiado para la función de formato dada (por ejemplo, un TextWriter), y segundo, un valor para imprimir y que genera o devuelve el texto apropiado. El segundo argumento es el valor particular a imprimir. |
% t | Un especificador de formato general requiere un argumento: una función que acepta un parámetro de contexto del tipo apropiado para la función de formato dada (aTextWriter) y que genera o devuelve el texto apropiado. Los tipos de enteros básicos sonbyte, sbyte, int16, uint16, int32, uint32, int64, uint64, nativeint, y unativeint. Los tipos básicos de coma flotante son float y float32. |
los widthes un parámetro opcional. Es un número entero que indica el ancho mínimo del resultado. Por ejemplo,% 5d imprime un número entero con al menos espacios de 5 caracteres.
Válido flags se describen en la siguiente tabla:
Valor | Descripción |
---|---|
0 | Especifica agregar ceros en lugar de espacios para completar el ancho requerido. |
- | Especifica justificar a la izquierda el resultado dentro del ancho especificado. |
+ | Especifica agregar un carácter + si el número es positivo (para que coincida con un signo - para números negativos). |
' ' (espacio) | Especifica agregar un espacio adicional si el número es positivo (para que coincida con un signo - para números negativos). |
# | Inválido. |
Ejemplo
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
Cuando compila y ejecuta el programa, produce el siguiente resultado:
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 clase de consola
Esta clase es parte del marco .NET. Representa los flujos estándar de entrada, salida y error para aplicaciones de consola.
Proporciona varios métodos para leer y escribir en la consola. La siguiente tabla muestra los métodos:
Método | Descripción |
---|---|
Bip() | Reproduce el sonido de un pitido a través del altavoz de la consola. |
Pitido (Int32, Int32) | Reproduce el sonido de un pitido de una frecuencia y duración específicas a través del altavoz de la consola. |
Claro | Borra el búfer de la consola y la correspondiente ventana de la consola de información de visualización. |
MoveBufferArea (Int32, Int32, Int32, Int32, Int32, Int32) | Copia un área de origen especificada del búfer de pantalla en un área de destino especificada. |
MoveBufferArea (Int32, Int32, Int32, Int32, Int32, Int32, Char, ConsoleColor, ConsoleColor) | Copia un área de origen especificada del búfer de pantalla en un área de destino especificada. |
OpenStandardError () | Adquiere el flujo de errores estándar. |
OpenStandardError (Int32) | Adquiere el flujo de error estándar, que se establece en un tamaño de búfer especificado. |
OpenStandardInput () | Adquiere el flujo de entrada estándar. |
Entrada estándar abierta (Int32) | Adquiere el flujo de entrada estándar, que se establece en un tamaño de búfer especificado. |
OpenStandardOutput () | Adquiere el flujo de salida estándar. |
OpenStandardOutput (Int32) | Adquiere el flujo de salida estándar, que se establece en un tamaño de búfer especificado. |
Leer | Lee el siguiente carácter del flujo de entrada estándar. |
Leer la clave() | Obtiene el siguiente carácter o tecla de función presionada por el usuario. La tecla presionada se muestra en la ventana de la consola. |
ReadKey (booleano) | Obtiene el siguiente carácter o tecla de función presionada por el usuario. La tecla presionada se muestra opcionalmente en la ventana de la consola. |
ReadLine | Lee la siguiente línea de caracteres del flujo de entrada estándar. |
ResetColor | Establece los colores de la consola de primer plano y de fondo en sus valores predeterminados. |
SetBufferSize | Establece la altura y el ancho del área de búfer de pantalla en los valores especificados. |
SetCursorPosition | Establece la posición del cursor. |
SetError | Establece la propiedad Error en el objeto TextWriter especificado . |
Establecer en | Establece la propiedad In en el objeto TextReader especificado . |
Exponer | Establece la propiedad Out en el objeto TextWriter especificado . |
SetWindowPosition | Establece la posición de la ventana de la consola en relación con el búfer de pantalla. |
SetWindowSize | Establece la altura y el ancho de la ventana de la consola en los valores especificados. |
Escribir (booleano) | Escribe la representación de texto del valor booleano especificado en el flujo de salida estándar. |
Escribir (Char) | Escribe el valor de carácter Unicode especificado en el flujo de salida estándar. |
Escribir (Char []) | Escribe la matriz especificada de caracteres Unicode en el flujo de salida estándar. |
Escribir (decimal) | Escribe la representación de texto del valor decimal especificado en el flujo de salida estándar. |
Escribir (doble) | Escribe la representación de texto del valor de punto flotante de precisión doble especificado en el flujo de salida estándar. |
Escritura (Int32) | Escribe la representación de texto del valor entero de 32 bits con signo especificado en el flujo de salida estándar. |
Escritura (Int64) | Escribe la representación de texto del valor entero de 64 bits con signo especificado en el flujo de salida estándar. |
Escribir (objeto) | Escribe la representación de texto del objeto especificado en el flujo de salida estándar. |
Escribir (sencillo) | Escribe la representación de texto del valor de punto flotante de precisión simple especificado en el flujo de salida estándar. |
Escribir (cadena) | Escribe el valor de cadena especificado en el flujo de salida estándar. |
Escribir (UInt32) | Escribe la representación de texto del valor entero sin signo de 32 bits especificado en el flujo de salida estándar. |
Escritura (UInt64) | Escribe la representación de texto del valor entero sin signo de 64 bits especificado en el flujo de salida estándar. |
Escribir (cadena, objeto) | Escribe la representación de texto del objeto especificado en el flujo de salida estándar utilizando la información de formato especificada. |
Escribir (cadena, objeto []) | Escribe la representación de texto de la matriz de objetos especificada en el flujo de salida estándar utilizando la información de formato especificada. |
Escritura (Char [], Int32, Int32) | Escribe el subarreglo especificado de caracteres Unicode en el flujo de salida estándar. |
Escribir (cadena, objeto, objeto) | Escribe la representación de texto de los objetos especificados en el flujo de salida estándar utilizando la información de formato especificada. |
Escribir (cadena, objeto, objeto, objeto) | Escribe la representación de texto de los objetos especificados en el flujo de salida estándar utilizando la información de formato especificada. |
Escribir (cadena, objeto, objeto, objeto, objeto) | Escribe la representación de texto de los objetos especificados y la lista de parámetros de longitud variable en el flujo de salida estándar utilizando la información de formato especificada. |
Línea de escritura() | Escribe el terminador de línea actual en el flujo de salida estándar. |
WriteLine (booleano) | Escribe la representación de texto del valor booleano especificado, seguido del terminador de línea actual, en el flujo de salida estándar. |
WriteLine (Char) | Escribe el carácter Unicode especificado, seguido del valor del terminador de línea actual, en el flujo de salida estándar. |
WriteLine (Char []) | Escribe la matriz especificada de caracteres Unicode, seguida del terminador de línea actual, en el flujo de salida estándar. |
WriteLine (decimal) | Escribe la representación de texto del valor decimal especificado, seguido del terminador de línea actual, en el flujo de salida estándar. |
WriteLine (doble) | Escribe la representación de texto del valor de punto flotante de precisión doble especificado, seguido del terminador de línea actual, en el flujo de salida estándar. |
WriteLine (Int32) | Escribe la representación de texto del valor entero de 32 bits con signo especificado, seguido del terminador de línea actual, en el flujo de salida estándar. |
WriteLine (Int64) | Escribe la representación de texto del valor entero de 64 bits con signo especificado, seguido del terminador de línea actual, en el flujo de salida estándar. |
WriteLine (objeto) | Escribe la representación de texto del objeto especificado, seguida del terminador de línea actual, en el flujo de salida estándar. |
WriteLine (Single) | Escribe la representación de texto del valor de punto flotante de precisión simple especificado, seguido del terminador de línea actual, en el flujo de salida estándar. |
WriteLine (cadena) | Escribe el valor de cadena especificado, seguido del terminador de línea actual, en el flujo de salida estándar. |
WriteLine (UInt32) | Escribe la representación de texto del valor entero sin signo de 32 bits especificado, seguido del terminador de línea actual, en el flujo de salida estándar. |
WriteLine (UInt64) | Escribe la representación de texto del valor entero sin signo de 64 bits especificado, seguido del terminador de línea actual, en el flujo de salida estándar. |
WriteLine (cadena, objeto) | Escribe la representación de texto del objeto especificado, seguida del terminador de línea actual, en el flujo de salida estándar utilizando la información de formato especificada. |
WriteLine (Cadena, Objeto []) | Escribe la representación de texto de la matriz de objetos especificada, seguida del terminador de línea actual, en el flujo de salida estándar utilizando la información de formato especificada. |
WriteLine (Char [], Int32, Int32) | Escribe el subarreglo especificado de caracteres Unicode, seguido del terminador de línea actual, en el flujo de salida estándar. |
WriteLine (cadena, objeto, objeto) | Escribe la representación de texto de los objetos especificados, seguida del terminador de línea actual, en el flujo de salida estándar utilizando la información de formato especificada. |
WriteLine (cadena, objeto, objeto, objeto) | Escribe la representación de texto de los objetos especificados, seguida del terminador de línea actual, en el flujo de salida estándar utilizando la información de formato especificada. |
WriteLine (cadena, objeto, objeto, objeto, objeto) | Escribe la representación de texto de los objetos especificados y la lista de parámetros de longitud variable, seguida del terminador de línea actual, en el flujo de salida estándar utilizando la información de formato especificada. |
El siguiente ejemplo demuestra la lectura desde la consola y la escritura en ella:
Ejemplo
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()
Cuando compila y ejecuta el programa, produce el siguiente resultado:
What's your name? Kabir
Hello, Kabir
Big Greetings from TutorialsPoint and Absoulte Classes
|2015-Jan-05|
El espacio de nombres System.IO
El espacio de nombres System.IO contiene una variedad de clases útiles para realizar E / S básicas.
Contiene tipos o clases que permiten leer y escribir en archivos y flujos de datos y tipos que brindan soporte básico para archivos y directorios.
Clases útiles para trabajar con el sistema de archivos -
- La clase System.IO.File se utiliza para crear, agregar y eliminar archivos.
- La clase System.IO.Directory se utiliza para crear, mover y eliminar directorios.
- La clase System.IO.Path realiza operaciones en cadenas, que representan rutas de archivo.
- La clase System.IO.FileSystemWatcher permite a los usuarios escuchar cambios en un directorio.
Clases útiles para trabajar con los flujos (secuencia de bytes) -
- La clase System.IO.StreamReader se usa para leer caracteres de una secuencia.
- La clase System.IO.StreamWriter se usa para escribir caracteres en una secuencia.
- La clase System.IO.MemoryStream crea un flujo de bytes en memoria.
La siguiente tabla muestra todas las clases proporcionadas en el espacio de nombres junto con una breve descripción:
Clase | Descripción |
---|---|
BinaryReader | Lee tipos de datos primitivos como valores binarios en una codificación específica. |
Escritor binario | Escribe tipos primitivos en binario en una secuencia y admite la escritura de cadenas en una codificación específica. |
BufferedStream | Agrega una capa de almacenamiento en búfer para leer y escribir operaciones en otro flujo. |
Directorio | Expone métodos estáticos para crear, mover y enumerar a través de directorios y subdirectorios. |
DirectoryInfo | Expone métodos de instancia para crear, mover y enumerar a través de directorios y subdirectorios. |
DirectoryNotFoundException | Excepción que se produce cuando no se puede encontrar parte de un archivo o directorio. |
DriveInfo | Proporciona acceso a la información de una unidad. |
DriveNotFoundException | La excepción que se lanza al intentar acceder a una unidad o recurso compartido que no está disponible. |
EndOfStreamException | La excepción que se lanza cuando se intenta leer más allá del final de una secuencia. |
ErrorEventArgs | Proporciona datos para el evento FileSystemWatcher.Error. |
Archivo | Proporciona métodos estáticos para la creación, copia, eliminación, movimiento y apertura de un solo archivo y ayuda en la creación de objetos FileStream. |
FileFormatException | La excepción que se produce cuando un archivo de entrada o un flujo de datos que se supone que cumple con una determinada especificación de formato de archivo está mal formado. |
Información del archivo | Proporciona propiedades y métodos de instancia para la creación, copia, eliminación, movimiento y apertura de archivos, y ayuda en la creación de objetos FileStream. |
FileLoadException | Excepción que se produce cuando se encuentra un ensamblado administrado pero no se puede cargar. |
FileNotFoundException | La excepción que se lanza cuando falla un intento de acceder a un archivo que no existe en el disco. |
FileStream | Expone una secuencia alrededor de un archivo, que admite operaciones de lectura y escritura tanto síncronas como asincrónicas. |
FileSystemEventArgs | Proporciona datos para los eventos del directorio: modificado, creado, eliminado. |
FileSystemInfo | Proporciona la clase base para los objetos FileInfo y DirectoryInfo. |
FileSystemWatcher | Escucha las notificaciones de cambio del sistema de archivos y genera eventos cuando cambia un directorio o archivo en un directorio. |
InternalBufferOverflowException | La excepción lanzada cuando el búfer interno se desborda. |
InvalidDataException | La excepción que se produce cuando un flujo de datos tiene un formato no válido. |
IODescriptionAttribute | Establece la descripción que los diseñadores visuales pueden mostrar al hacer referencia a un evento, extensor o propiedad. |
IOException | La excepción que se lanza cuando ocurre un error de E / S. |
MemoryStream | Crea una secuencia cuyo almacenamiento de respaldo es la memoria. |
Camino | Realiza operaciones en instancias de String que contienen información de ruta de directorio o archivo. Estas operaciones se realizan de forma multiplataforma. |
PathTooLongException | La excepción que se produce cuando una ruta o un nombre de archivo es más largo que la longitud máxima definida por el sistema. |
PipeException | Se lanza cuando se produce un error dentro de una tubería con nombre. |
RenamedEventArgs | Proporciona datos para el evento Renombrado. |
Corriente | Proporciona una vista genérica de una secuencia de bytes. Esto es una clase abstracta. |
StreamReader | Implementa un TextReader que lee caracteres de un flujo de bytes en una codificación particular. |
StreamWriter | Implementa un TextWriter para escribir caracteres en una secuencia en una codificación particular. Para examinar el código fuente de .NET Framework para este tipo, consulte la Fuente de referencia. |
StringReader | Implementa un TextReader que lee de una cadena. |
StringWriter | Implementa un TextWriter para escribir información en una cadena. La información se almacena en un StringBuilder subyacente. |
TextReader | Representa un lector que puede leer una serie secuencial de caracteres. |
TextWriter | Representa un escritor que puede escribir una serie secuencial de caracteres. Esta clase es abstracta. |
Accesor de memoria no administrado | Proporciona acceso aleatorio a bloques de memoria no administrados desde código administrado. |
UnmanagedMemoryStream | Proporciona acceso a bloques de memoria no administrados desde código administrado. |
WindowsRuntimeStorageExtensions | Contiene métodos de extensión para las interfaces IStorageFile e IStorageFolder en Windows Runtime al desarrollar aplicaciones de la Tienda Windows. |
WindowsRuntimeStreamExtensions | Contiene métodos de extensión para convertir entre transmisiones en Windows Runtime y transmisiones administradas en .NET para aplicaciones de la Tienda Windows. |
Ejemplo
El siguiente ejemplo crea un archivo llamado test.txt, escribe un mensaje allí, lee el texto del archivo y lo imprime en la consola.
Note - ¡La cantidad de código necesaria para hacer esto es sorprendentemente menor!
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
Cuando compila y ejecuta el programa, produce el siguiente resultado:
Hello There
Welcome to:
Tutorials Point