Основной входной выход включает в себя —
- Чтение и запись в консоль.
- Чтение и запись в файл.
Модуль 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 | Определяет добавление нулей вместо пробелов для получения необходимой ширины. |
— | Определяет выравнивание по левому краю результата в пределах указанной ширины. |
+ | Определяет добавление символа +, если число положительное (чтобы соответствовать знаку — для отрицательных чисел). |
‘ ‘ (пространство) | Определяет добавление дополнительного пробела, если число положительное (чтобы соответствовать — знак для отрицательных чисел). |
# | Недействительным. |
пример
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 (Строка, Объект, Объект, Объект, Объект) | Записывает текстовое представление указанных объектов и список параметров переменной длины, за которым следует текущий ограничитель строки, в стандартный поток вывода с использованием информации указанного формата. |
Следующий пример демонстрирует чтение из консоли и запись в нее —
пример
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, записывается туда сообщение, считывается текст из файла и выводится его на консоль.
Примечание . Объем кода, необходимый для этого, на удивление меньше!
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
Когда вы компилируете и запускаете программу, она выдает следующий вывод: