F # - Базовый ввод / вывод
Базовый ввод-вывод включает -
- Чтение и запись в консоль.
- Чтение и запись в файл.
Модуль Core.Printf
Мы использовали функции printf и printfn для записи в консоль. В этом разделе мы подробно рассмотримPrintf модуль F #.
Помимо перечисленных выше функций, модуль Core.Printf в F # имеет различные другие методы печати и форматирования с использованием маркеров% в качестве заполнителей. В следующей таблице показаны методы с кратким описанием -
Значение | Описание |
---|---|
bprintf: StringBuilder → BuilderFormat <'T> →' T | Печатает в StringBuilder. |
eprintf: TextWriterFormat <'T> →' T | Печатает отформатированный вывод в stderr. |
eprintfn: TextWriterFormat <'T> →' T | Печатает форматированный вывод в stderr с добавлением новой строки. |
failwithf: StringFormat <'T,' Результат> → 'T | Печатает в строковый буфер и вызывает исключение с заданным результатом. |
fprintf: TextWriter → TextWriterFormat <'T> →' T | Печатает автору текста. |
fprintfn: TextWriter → TextWriterFormat <'T> →' T | Печатает автору текста с добавлением новой строки. |
kbprintf: (unit → 'Результат) → StringBuilder → BuilderFormat <' T, 'Результат> →' T | Подобно bprintf, но вызывает указанную функцию для генерации результата. |
kfprintf: (unit → 'Результат) → TextWriter → TextWriterFormat <' T, 'Результат> →' T | Подобно fprintf, но вызывает указанную функцию для генерации результата. |
kprintf: (строка → 'Результат) → StringFormat <' T, 'Результат> →' T | Подобно printf, но вызывает указанную функцию для генерации результата. Например, они позволяют принудительно смывать печать после того, как весь вывод был введен в канал, но не раньше. |
ksprintf: (строка → 'Результат) → StringFormat <' T, 'Результат> →' T | Подобно sprintf, но вызывает указанную функцию для генерации результата. |
printf: TextWriterFormat <'T> →' T | Выводит форматированный вывод на стандартный вывод. |
printfn: TextWriterFormat <'T> →' T | Печатает форматированный вывод в стандартный вывод, добавляя новую строку. |
sprintf: StringFormat <'T> →' T | Печатает в строку с использованием внутреннего строкового буфера и возвращает результат в виде строки. |
Спецификации формата
Спецификации формата используются для форматирования ввода или вывода в соответствии с потребностями программистов.
Это строки с маркерами%, указывающими заполнители формата.
Синтаксис заполнителей формата:
%[flags][width][.precision][type]
В type интерпретируется как -
Тип | Описание |
---|---|
% b | Форматы a bool, отформатирован как true или же false. |
% c | Форматирует символ. |
% s | Форматы a string, форматируется как его содержимое, без интерпретации каких-либо escape-символов. |
% d,% i | Форматирует любой базовый целочисленный тип в формате десятичного целого числа со знаком, если основной целочисленный тип подписан. |
% u | Форматирует любой базовый целочисленный тип как десятичное целое число без знака. |
%Икс | Форматирует любой базовый целочисленный тип в виде шестнадцатеричного целого числа без знака, используя строчные буквы от a до f. |
%ИКС | Форматирует любой базовый целочисленный тип в виде шестнадцатеричного целого числа без знака с использованием прописных букв от A до F. |
% o | Форматирует любой базовый целочисленный тип как восьмеричное целое число без знака. |
% e,% E,% f,% F,% g,% G | Форматирует любой базовый тип с плавающей запятой (float, float32) форматируется с использованием спецификаций формата с плавающей запятой в стиле C. |
% e,% E | Форматирует значение со знаком в виде [-] d.dddde [sign] ddd, где d - одна десятичная цифра, dddd - одна или несколько десятичных цифр, ddd - ровно три десятичных цифры, а знак - + или -. |
% f | Форматирует значение со знаком в форме [-] dddd.dddd, где dddd - одна или несколько десятичных цифр. Количество цифр перед десятичной точкой зависит от величины числа, а количество цифр после десятичной точки зависит от требуемой точности. |
% г,% G | Форматирует значение со знаком, напечатанное в формате f или e, в зависимости от того, что более компактно для данного значения и точности. |
% M | Форматирует десятичное значение. |
% O | Форматирует любое значение, напечатанное, помещая объект в рамку и используя его ToString метод. |
% А,% + А | Форматирует любое значение, напечатанное с настройками макета по умолчанию. Используйте% + A, чтобы вывести структуру размеченных объединений с внутренними и частными представлениями. |
% a | Спецификатор общего формата требует двух аргументов. Первый аргумент - это функция, которая принимает два аргумента: во-первых, параметр контекста соответствующего типа для данной функции форматирования (например, TextWriter), а во-вторых, значение для печати, которое либо выводит, либо возвращает соответствующий текст. Второй аргумент - это конкретное значение для печати. |
% t | Спецификатор общего формата требует одного аргумента: функции, которая принимает параметр контекста соответствующего типа для данной функции форматирования (aTextWriter) и которая либо выводит, либо возвращает соответствующий текст. Основные целочисленные типы:byte, sbyte, int16, uint16, int32, uint32, int64, uint64, nativeint, и unativeint. Основные типы с плавающей запятой: float и float32. |
В widthнеобязательный параметр. Это целое число, указывающее минимальную ширину результата. Например,% 5d печатает целое число с пробелами не менее 5 символов.
Действительный flags описаны в следующей таблице -
Значение | Описание |
---|---|
0 | Задает добавление нулей вместо пробелов для получения необходимой ширины. |
- | Задает выравнивание результата по левому краю в пределах указанной ширины. |
+ | Задает добавление символа +, если число положительное (чтобы соответствовать знаку - для отрицательных чисел). |
' ' (пространство) | Указывает на добавление дополнительного пробела, если число положительное (чтобы соответствовать знаку - для отрицательных чисел). |
# | Недействительным. |
пример
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
Когда вы компилируете и выполняете программу, она дает следующий результат:
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
Консольный класс
Этот класс является частью платформы .NET. Он представляет собой стандартные потоки ввода, вывода и ошибок для консольных приложений.
Он предоставляет различные методы для чтения и записи в консоль. В следующей таблице показаны методы -
Метод | Описание |
---|---|
Звуковой сигнал () | Воспроизводит звуковой сигнал через динамик консоли. |
Звуковой сигнал (Int32, Int32) | Воспроизводит звуковой сигнал определенной частоты и длительности через динамик консоли. |
Очистить | Очищает буфер консоли и соответствующее окно консоли от отображаемой информации. |
MoveBufferArea (Int32, Int32, Int32, Int32, Int32, Int32) | Копирует указанную исходную область экранного буфера в указанную целевую область. |
MoveBufferArea (Int32, Int32, Int32, Int32, Int32, Int32, Char, ConsoleColor, ConsoleColor) | Копирует указанную исходную область экранного буфера в указанную целевую область. |
OpenStandardError () | Получает стандартный поток ошибок. |
OpenStandardError (Int32) | Получает стандартный поток ошибок, для которого задан указанный размер буфера. |
OpenStandardInput () | Получает стандартный входной поток. |
OpenStandardInput (Int32) | Получает стандартный входной поток, для которого задан указанный размер буфера. |
OpenStandardOutput () | Получает стандартный выходной поток. |
OpenStandardOutput (Int32) | Получает стандартный выходной поток, для которого задан указанный размер буфера. |
Читать | Читает следующий символ из стандартного входного потока. |
ReadKey () | Получает следующий символ или функциональную клавишу, нажатую пользователем. Нажатая клавиша отображается в окне консоли. |
ReadKey (логический) | Получает следующий символ или функциональную клавишу, нажатую пользователем. Нажатая клавиша дополнительно отображается в окне консоли. |
ReadLine | Читает следующую строку символов из стандартного входного потока. |
ResetColor | Устанавливает цвета консоли переднего плана и фона по умолчанию. |
SetBufferSize | Устанавливает высоту и ширину буферной области экрана на указанные значения. |
SetCursorPosition | Устанавливает позицию курсора. |
SetError | Устанавливает свойство Error для указанного объекта TextWriter . |
SetIn | Устанавливает свойство In для указанного объекта TextReader . |
SetOut | Устанавливает свойство Out для указанного объекта TextWriter . |
SetWindowPosition | Устанавливает положение окна консоли относительно экранного буфера. |
SetWindowSize | Устанавливает заданные значения высоты и ширины окна консоли. |
Запись (логическое значение) | Записывает текстовое представление указанного логического значения в стандартный выходной поток. |
Написать (Char) | Записывает указанное значение символа Юникода в стандартный выходной поток. |
Написать (Char []) | Записывает указанный массив символов Юникода в стандартный выходной поток. |
Написать (десятичный) | Записывает текстовое представление указанного значения Decimal в стандартный выходной поток. |
Написать (двойной) | Записывает текстовое представление указанного значения с плавающей запятой двойной точности в стандартный выходной поток. |
Написать (Int32) | Записывает текстовое представление указанного 32-разрядного целого числа со знаком в стандартный выходной поток. |
Запись (Int64) | Записывает текстовое представление указанного 64-разрядного целого числа со знаком в стандартный выходной поток. |
Написать (объект) | Записывает текстовое представление указанного объекта в стандартный поток вывода. |
Написать (Single) | Записывает текстовое представление указанного значения с плавающей запятой одинарной точности в стандартный выходной поток. |
Написать (строка) | Записывает указанное строковое значение в стандартный выходной поток. |
Написать (UInt32) | Записывает текстовое представление указанного 32-разрядного целого числа без знака в стандартный поток вывода. |
Написать (UInt64) | Записывает текстовое представление указанного 64-битового целого числа без знака в стандартный поток вывода. |
Запись (строка, объект) | Записывает текстовое представление указанного объекта в стандартный поток вывода, используя информацию указанного формата. |
Написать (Строка, Объект []) | Записывает текстовое представление указанного массива объектов в стандартный выходной поток, используя указанную информацию о формате. |
Запись (Char [], Int32, Int32) | Записывает указанный подмассив символов Юникода в стандартный выходной поток. |
Запись (строка, объект, объект) | Записывает текстовое представление указанных объектов в стандартный поток вывода, используя информацию указанного формата. |
Запись (строка, объект, объект, объект) | Записывает текстовое представление указанных объектов в стандартный поток вывода, используя информацию указанного формата. |
Запись (строка, объект, объект, объект, объект) | Записывает текстовое представление указанных объектов и список параметров переменной длины в стандартный поток вывода с использованием информации указанного формата. |
WriteLine () | Записывает терминатор текущей строки в стандартный выходной поток. |
WriteLine (логический) | Записывает текстовое представление указанного логического значения, за которым следует признак конца текущей строки, в стандартный поток вывода. |
WriteLine (симв.) | Записывает указанный символ Юникода, за которым следует текущий признак конца строки, в стандартный поток вывода. |
WriteLine (Char []) | Записывает указанный массив символов Юникода, за которым следует признак конца текущей строки, в стандартный поток вывода. |
WriteLine (десятичный) | Записывает текстовое представление указанного значения Decimal, за которым следует признак конца текущей строки, в стандартный поток вывода. |
WriteLine (двойной) | Записывает текстовое представление указанного значения с плавающей запятой двойной точности, за которым следует текущий признак конца строки, в стандартный поток вывода. |
WriteLine (Int32) | Записывает текстовое представление указанного 32-битового целого числа со знаком, за которым следует текущий признак конца строки, в стандартный поток вывода. |
WriteLine (Int64) | Записывает текстовое представление указанного 64-разрядного целого числа со знаком, за которым следует текущий признак конца строки, в стандартный поток вывода. |
WriteLine (объект) | Записывает текстовое представление указанного объекта, за которым следует признак конца текущей строки, в стандартный поток вывода. |
WriteLine (одиночный) | Записывает текстовое представление указанного значения с плавающей запятой одиночной точности, за которым следует текущий признак конца строки, в стандартный поток вывода. |
WriteLine (строка) | Записывает указанное строковое значение, за которым следует текущий признак конца строки, в стандартный поток вывода. |
WriteLine (UInt32) | Записывает текстовое представление указанного 32-битового целого числа без знака, за которым следует текущий признак конца строки, в стандартный поток вывода. |
WriteLine (UInt64) | Записывает текстовое представление указанного 64-битового целого числа без знака, за которым следует текущий признак конца строки, в стандартный поток вывода. |
WriteLine (строка, объект) | Записывает текстовое представление указанного объекта, за которым следует признак конца текущей строки, в стандартный поток вывода с использованием указанной информации о формате. |
WriteLine (String, Object []) | Записывает текстовое представление указанного массива объектов, за которым следует признак конца текущей строки, в стандартный поток вывода, используя указанную информацию о формате. |
WriteLine (Char [], Int32, Int32) | Записывает указанный подмассив символов Юникода, за которым следует текущий признак конца строки, в стандартный поток вывода. |
WriteLine (строка, объект, объект) | Записывает текстовое представление указанных объектов, за которым следует признак конца текущей строки, в стандартный выходной поток, используя указанную информацию о формате. |
WriteLine (строка, объект, объект, объект) | Записывает текстовое представление указанных объектов, за которым следует признак конца текущей строки, в стандартный выходной поток, используя указанную информацию о формате. |
WriteLine (строка, объект, объект, объект, объект) | Записывает текстовое представление указанных объектов и список параметров переменной длины, за которым следует признак конца текущей строки, в стандартный выходной поток, используя указанную информацию о формате. |
В следующем примере демонстрируется чтение с консоли и запись в нее -
пример
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()
Когда вы компилируете и выполняете программу, она дает следующий результат:
What's your name? Kabir
Hello, Kabir
Big Greetings from TutorialsPoint and Absoulte Classes
|2015-Jan-05|
Пространство имен System.IO
Пространство имен System.IO содержит множество полезных классов для выполнения базового ввода-вывода.
Он содержит типы или классы, которые позволяют читать и записывать файлы и потоки данных, а также типы, обеспечивающие базовую поддержку файлов и каталогов.
Классы, полезные для работы с файловой системой -
- Класс System.IO.File используется для создания, добавления и удаления файлов.
- Класс System.IO.Directory используется для создания, перемещения и удаления каталогов.
- Класс System.IO.Path выполняет операции со строками, которые представляют пути к файлам.
- System.IO.FileSystemWatcher класс позволяет пользователям прослушивать каталог на предмет изменений.
Классы, полезные для работы с потоками (последовательность байтов) -
- Класс System.IO.StreamReader используется для чтения символов из потока.
- Класс System.IO.StreamWriter используется для записи символов в поток.
- Класс System.IO.MemoryStream создает поток байтов в памяти.
В следующей таблице показаны все классы, представленные в пространстве имен, вместе с кратким описанием.
Класс | Описание |
---|---|
BinaryReader | Считывает примитивные типы данных как двоичные значения в определенной кодировке. |
BinaryWriter | Записывает примитивные типы в двоичном формате в поток и поддерживает запись строк в определенной кодировке. |
Буферизованный поток | Добавляет слой буферизации для операций чтения и записи в другом потоке. |
Каталог | Предоставляет статические методы для создания, перемещения и перечисления каталогов и подкаталогов. |
DirectoryInfo | Предоставляет методы экземпляра для создания, перемещения и перечисления по каталогам и подкаталогам. |
DirectoryNotFoundException | Исключение, которое выдается, когда не удается найти часть файла или каталога. |
DriveInfo | Предоставляет доступ к информации о диске. |
DriveNotFoundException | Исключение, возникающее при попытке получить доступ к недоступному диску или общему ресурсу. |
EndOfStreamException | Исключение, возникающее при попытке чтения после конца потока. |
ErrorEventArgs | Предоставляет данные для события FileSystemWatcher.Error. |
файл | Предоставляет статические методы для создания, копирования, удаления, перемещения и открытия одного файла, а также помогает в создании объектов FileStream. |
FileFormatException | Исключение, которое выдается, когда входной файл или поток данных, который должен соответствовать определенной спецификации формата файла, имеет неправильный формат. |
FileInfo | Предоставляет свойства и методы экземпляра для создания, копирования, удаления, перемещения и открытия файлов, а также помогает в создании объектов FileStream. |
FileLoadException | Исключение, которое выдается, когда управляемая сборка обнаружена, но не может быть загружена. |
FileNotFoundException | Исключение, которое выдается при неудачной попытке доступа к файлу, которого нет на диске. |
FileStream | Предоставляет поток вокруг файла, поддерживая как синхронные, так и асинхронные операции чтения и записи. |
FileSystemEventArgs | Предоставляет данные для событий каталога - Изменено, Создано, Удалено. |
FileSystemInfo | Предоставляет базовый класс для объектов FileInfo и DirectoryInfo. |
FileSystemWatcher | Прослушивает уведомления об изменении файловой системы и генерирует события при изменении каталога или файла в каталоге. |
InternalBufferOverflowException | Исключение возникает при переполнении внутреннего буфера. |
InvalidDataException | Исключение, которое выдается, когда поток данных имеет недопустимый формат. |
IODescriptionAttribute | Задает описание, которое визуальные конструкторы могут отображать при ссылке на событие, расширитель или свойство. |
IOException | Исключение, которое выдается при возникновении ошибки ввода-вывода. |
MemoryStream | Создает поток, резервным хранилищем которого является память. |
Путь | Выполняет операции с экземплярами String, которые содержат информацию о пути к файлу или каталогу. Эти операции выполняются кроссплатформенным образом. |
PathTooLongException | Исключение, которое выдается, когда путь или имя файла длиннее максимальной длины, определенной системой. |
PipeException | Вызывается, когда в именованном канале возникает ошибка. |
RenamedEventArgs | Предоставляет данные для события Renamed. |
Поток | Предоставляет общее представление о последовательности байтов. Это абстрактный класс. |
StreamReader | Реализует TextReader, который считывает символы из байтового потока в определенной кодировке. |
StreamWriter | Реализует TextWriter для записи символов в поток в определенной кодировке. Чтобы просмотреть исходный код .NET Framework для этого типа, см. Справочный источник. |
StringReader | Реализует TextReader, который читает из строки. |
StringWriter | Реализует TextWriter для записи информации в строку. Информация хранится в базовом StringBuilder. |
TextReader | Представляет средство чтения, которое может читать последовательные серии символов. |
TextWriter | Представляет писателя, который может записывать последовательные серии символов. Этот класс абстрактный. |
UnmanagedMemoryAccessor | Предоставляет произвольный доступ к неуправляемым блокам памяти из управляемого кода. |
НеуправляемыйMemoryStream | Предоставляет доступ к неуправляемым блокам памяти из управляемого кода. |
WindowsRuntimeStorageExtensions | Содержит методы расширения для интерфейсов IStorageFile и IStorageFolder в среде выполнения Windows при разработке приложений Магазина Windows. |
WindowsRuntimeStreamExtensions | Содержит методы расширения для преобразования между потоками в среде выполнения Windows и управляемыми потоками в .NET для приложений Магазина Windows. |
пример
В следующем примере создается файл с именем test.txt, записывается в него сообщение, считывается текст из файла и печатается его на консоли.
Note - Количество кода, необходимого для этого, на удивление меньше!
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
Когда вы компилируете и выполняете программу, она дает следующий результат:
Hello There
Welcome to:
Tutorials Point