Основной входной выход включает в себя —
- Чтение и запись в консоль.
- Чтение и запись в файл.
Модуль 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
Когда вы компилируете и запускаете программу, она выдает следующий вывод: