Учебники

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,’ Result> → ‘T Печатает в строковый буфер и вызывает исключение с заданным результатом.
fprintf: TextWriter → TextWriterFormat <‘T> →’ T Печать для автора текста.
fprintfn: TextWriter → TextWriterFormat <‘T> →’ T Печатает на авторе текста, добавляя новую строку.
kbprintf: (unit → ‘Result) → StringBuilder → BuilderFormat <‘ T, ‘Result> →’ T Подобно bprintf, но вызывает указанную функцию для генерации результата.
kfprintf: (блок → ‘Результат) → 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]

Тип интерпретируется как —

Тип Описание
% б Форматирует bool, отформатированный как true или false .
% с Форматирует персонажа.
% s Форматирует строку, отформатированную как ее содержимое, без интерпретации управляющих символов.
% d,% i Форматирует любой базовый целочисленный тип, отформатированный как десятичное целое число, со знаком, если базовый целочисленный тип подписан.
% U Форматирует любой основной целочисленный тип, отформатированный как десятичное целое число без знака.
%Икс Форматирует любой основной тип целого числа, отформатированный как шестнадцатеричное целое число без знака, используя строчные буквы от a до f.
%ИКС Форматирует любой основной целочисленный тип, отформатированный как шестнадцатеричное целое без знака, используя заглавные буквы от A до F.
% о Форматирует любой основной целочисленный тип, отформатированный как восьмеричное целое без знака.
% e,% E,% f,% F,% g,% G Форматирует любой базовый тип с плавающей точкой (float, float32), отформатированный с использованием спецификаций формата с плавающей точкой в ​​стиле C.
% e,% E Форматирует значение со знаком в форме [-] d.dddde [sign] ddd, где d — одна десятичная цифра, dddd — одна или несколько десятичных цифр, ddd — ровно три десятичных цифры, а знак + или -.
% е Форматирует значение со знаком в форме [-] dddd.dddd, где dddd — одна или несколько десятичных цифр. Количество цифр перед десятичной запятой зависит от величины числа, а количество цифр после десятичной запятой зависит от запрошенной точности.
% g,% G Форматирует значение со знаком, напечатанное в формате f или e, в зависимости от того, что является более компактным для заданного значения и точности.
% M Форматирует десятичное значение.
% O Форматирует любое значение, напечатанное упаковкой объекта и используя его метод ToString .
% А,% + А Форматирует любое значение, напечатанное с настройками макета по умолчанию. Используйте% + A, чтобы напечатать структуру различаемых союзов с внутренними и частными представлениями.
% в

Общий спецификатор формата, требует двух аргументов. Первый аргумент — это функция, которая принимает два аргумента: во-первых, параметр контекста соответствующего типа для данной функции форматирования (например, TextWriter), а во-вторых, значение для печати, которое либо выводит, либо возвращает соответствующий текст.

Второй аргумент — это конкретное значение для печати.

% т Спецификатор общего формата требует один аргумент: функция, которая принимает параметр контекста соответствующего типа для данной функции форматирования (aTextWriter) и которая либо выводит, либо возвращает соответствующий текст. Основные целочисленные типы: байты, sbyte, int16, uint16, int32, uint32, int64, uint64, nativeint и unativeint. Основные типы с плавающей точкой: float и float32.

Общий спецификатор формата, требует двух аргументов. Первый аргумент — это функция, которая принимает два аргумента: во-первых, параметр контекста соответствующего типа для данной функции форматирования (например, TextWriter), а во-вторых, значение для печати, которое либо выводит, либо возвращает соответствующий текст.

Второй аргумент — это конкретное значение для печати.

Ширина является необязательным параметром. Это целое число, которое указывает минимальную ширину результата. Например,% 5d печатает целое число с пробелами не менее 5 символов.

Допустимые флаги описаны в следующей таблице —

Значение Описание
0 Определяет добавление нулей вместо пробелов для получения необходимой ширины.
Определяет выравнивание по левому краю результата в пределах указанной ширины.
+ Определяет добавление символа +, если число положительное (чтобы соответствовать знаку — для отрицательных чисел).
‘ ‘ (пространство) Определяет добавление дополнительного пробела, если число положительное (чтобы соответствовать — знак для отрицательных чисел).
# Недействительным.

пример

Live Demo

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 Framework. Он представляет собой стандартные потоки ввода, вывода и ошибок для консольных приложений.

Он предоставляет различные методы для чтения и записи в консоли. В следующей таблице показаны методы —

метод Описание
Звуковой сигнал () Воспроизведение звукового сигнала через динамик консоли.
Beep (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 (Boolean) Получает следующий символ или функциональную клавишу, нажимаемую пользователем. Нажатая клавиша дополнительно отображается в окне консоли.
ReadLine Читает следующую строку символов из стандартного потока ввода.
ResetColor Устанавливает цвета переднего плана и фона консоли по умолчанию.
SetBufferSize Устанавливает высоту и ширину области экранного буфера для указанных значений.
SetCursorPosition Устанавливает положение курсора.
SetError Устанавливает свойство Error для указанного объекта TextWriter .
SetIn Устанавливает свойство In для указанного объекта TextReader .
накрытый стол Устанавливает свойство Out для указанного объекта TextWriter .
SetWindowPosition Устанавливает положение окна консоли относительно буфера экрана.
SetWindowSize Устанавливает высоту и ширину окна консоли на указанные значения.
Write (Boolean) Записывает текстовое представление указанного логического значения в стандартный поток вывода.
Написать (Char) Записывает указанное значение символа Unicode в стандартный поток вывода.
Запись (Char []) Записывает указанный массив символов Unicode в стандартный поток вывода.
Написать (Decimal) Записывает текстовое представление указанного десятичного значения в стандартный поток вывода.
Написать (Двухместный) Записывает текстовое представление указанного значения с плавающей запятой двойной точности в стандартный поток вывода.
Написать (Int32) Записывает текстовое представление указанного 32-разрядного целого числа со знаком в стандартный поток вывода.
Написать (Int64) Записывает текстовое представление указанного 64-разрядного целого числа со знаком в стандартный поток вывода.
Write (Object) Записывает текстовое представление указанного объекта в стандартный поток вывода.
Написать (Single) Записывает текстовое представление указанного значения с плавающей запятой одинарной точности в стандартный поток вывода.
Write (String) Записывает указанное строковое значение в стандартный поток вывода.
Написать (UInt32) Записывает текстовое представление указанного 32-разрядного целого числа без знака в стандартный поток вывода.
Написать (UInt64) Записывает текстовое представление указанного 64-разрядного целого числа без знака в стандартный поток вывода.
Запись (строка, объект) Записывает текстовое представление указанного объекта в стандартный поток вывода с использованием информации указанного формата.
Запись (Строка, Объект []) Записывает текстовое представление указанного массива объектов в стандартный поток вывода, используя указанную информацию о формате.
Запись (Char [], Int32, Int32) Записывает указанный подмассив символов Unicode в стандартный поток вывода.
Запись (строка, объект, объект) Записывает текстовое представление указанных объектов в стандартный поток вывода с использованием информации указанного формата.
Запись (строка, объект, объект, объект) Записывает текстовое представление указанных объектов в стандартный поток вывода с использованием информации указанного формата.
Запись (строка, объект, объект, объект, объект) Записывает текстовое представление указанных объектов и список параметров переменной длины в стандартный поток вывода, используя информацию указанного формата.
ЕЫпе () Записывает текущий ограничитель строки в стандартный поток вывода.
ЕЫпе (Boolean) Записывает текстовое представление указанного логического значения, за которым следует текущий символ конца строки, в стандартный поток вывода.
ЕЫпе (Чар) Записывает указанный символ Unicode, сопровождаемый текущим ограничителем строки, значение в стандартный поток вывода.
ЕЫпе (Char []) Записывает указанный массив символов Unicode, за которым следует текущий символ конца строки, в стандартный поток вывода.
ЕЫпе (Десятичный) Записывает текстовое представление указанного десятичного значения с последующим разделителем текущей строки в стандартный поток вывода.
WriteLine (Двухместный) Записывает текстовое представление указанного значения с плавающей запятой двойной точности, за которым следует текущий ограничитель строки, в стандартный поток вывода.
ЕЫпе (Int32) Записывает текстовое представление указанного 32-разрядного целочисленного значения со знаком, за которым следует текущий символ конца строки, в стандартный поток вывода.
ЕЫпе (Int64) Записывает текстовое представление указанного 64-разрядного целого числа со знаком, за которым следует текущий символ конца строки, в стандартный поток вывода.
ЕЫпе (Объект) Записывает текстовое представление указанного объекта, за которым следует текущий ограничитель строки, в стандартный поток вывода.
ЕЫпе (ка) Записывает текстовое представление указанного значения с плавающей запятой одинарной точности, за которым следует текущий ограничитель строки, в стандартный поток вывода.
WriteLine (String) Записывает указанное строковое значение, сопровождаемое текущим ограничителем строки, в стандартный поток вывода.
ЕЫпе (UInt32) Записывает текстовое представление указанного 32-разрядного целого числа без знака, за которым следует текущий разделитель строк, в стандартный поток вывода.
ЕЫпе (UInt64) Записывает текстовое представление указанного 64-разрядного целого числа без знака, после которого следует текущий разделитель строк, в стандартный поток вывода.
WriteLine (Строка, Объект) Записывает текстовое представление указанного объекта, за которым следует текущий ограничитель строки, в стандартный поток вывода с использованием информации указанного формата.
WriteLine (String, Object []) Записывает текстовое представление указанного массива объектов, за которым следует текущий ограничитель строки, в стандартный поток вывода с использованием информации указанного формата.
WriteLine (Char [], Int32, Int32) Записывает указанный подмассив символов Unicode, за которым следует текущий символ конца строки, в стандартный поток вывода.
WriteLine (Строка, Объект, Объект) Записывает текстовое представление указанных объектов, за которым следует текущий ограничитель строки, в стандартный поток вывода с использованием информации указанного формата.
WriteLine (Строка, Объект, Объект, Объект) Записывает текстовое представление указанных объектов, за которым следует текущий ограничитель строки, в стандартный поток вывода с использованием информации указанного формата.
WriteLine (Строка, Объект, Объект, Объект, Объект) Записывает текстовое представление указанных объектов и список параметров переменной длины, за которым следует текущий ограничитель строки, в стандартный поток вывода с использованием информации указанного формата.

Следующий пример демонстрирует чтение из консоли и запись в нее —

пример

Live Demo

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 Записывает примитивные типы в двоичном виде в поток и поддерживает запись строк в определенной кодировке.
BufferedStream Добавляет слой буферизации для операций чтения и записи в другом потоке.
каталог Предоставляет статические методы для создания, перемещения и перечисления через каталоги и подкаталоги.
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 Предоставляет данные для переименованного события.
Поток Предоставляет общий вид последовательности байтов. Это абстрактный класс.
StreamReader Реализует TextReader, который читает символы из байтового потока в определенной кодировке.
StreamWriter Реализует TextWriter для записи символов в поток в определенной кодировке. Чтобы просмотреть исходный код .NET Framework для этого типа, см. Справочный источник.
StringReader Реализует TextReader, который читает из строки.
StringWriter Реализует TextWriter для записи информации в строку. Информация хранится в базовом StringBuilder.
TextReader Представляет читателя, который может читать последовательные серии символов.
TextWriter Представляет писателя, который может написать последовательную серию символов. Этот класс является абстрактным.
UnmanagedMemoryAccessor Предоставляет произвольный доступ к неуправляемым блокам памяти из управляемого кода.
UnmanagedMemoryStream Предоставляет доступ к неуправляемым блокам памяти из управляемого кода.
WindowsRuntimeStorageExtensions Содержит методы расширения для интерфейсов IStorageFile и IStorageFolder в среде выполнения Windows при разработке приложений Магазина Windows.
WindowsRuntimeStreamExtensions Содержит методы расширения для преобразования потоков в среду выполнения Windows и управляемых потоков в приложениях .NET для Магазина Windows.

пример

В следующем примере создается файл с именем test.txt, записывается туда сообщение, считывается текст из файла и выводится его на консоль.

Примечание . Объем кода, необходимый для этого, на удивление меньше!

Live Demo

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

Когда вы компилируете и запускаете программу, она выдает следующий вывод: