LoveRead.info » Книги » Разная литература » Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Книгу Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

178 0 18:04, 26-08-2023
Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен
26 август 2023

Книга Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читать онлайн бесплатно без регистрации

В 10-м издании книги описаны новейшие возможности языка C# 9 и .NET 5 вместе с подробным "закулисным" обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле. Книга охватывает ASP.NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы .NET, начиная с улучшений показателей производительности настольных приложений Windows в .NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных. Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.

    1 ... 237 238 239 240 241 242 243 244 245 ... 407
    Перейти на страницу:
    // Использовать объект FileStream...

    }

    f4.Delete();

    Метод FileInfо.OpenText()

    Еще одним членом типа FileInfo, связанным с открытием файлов, является OpenText(). В отличие от Create(), Open(), OpenRead() и OpenWrite() метод OpenText() возвращает экземпляр типа StreamReader, а не FileStream. Исходя из того, что на диске С: имеется файл по имени boot.ini, вот как получить доступ к его содержимому:

    var fileName = $@"C{Path.VolumeSeparatorChar}

                       {Path.DirectorySeparatorChar}Test.dat";

    ...

    // Получить объект StreamReader.

    // Если вы работаете не на машине с Windows,

    // тогда измените имя файла надлежащим образом.

    FileInfo f5 = new FileInfo(fileName);

    // Перед использованием OpenText() файл должен существовать.

    f5.Create().Close();

    using(StreamReader sreader = f5.OpenText())

    {

      // Использовать объект StreamReader...

    }

    f5.Delete();

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

    Методы FileInfo.CreateText() и FileInfo.AppendText()

    Последними двумя методами, представляющими интерес в данный момент, являются CreateText() и AppendText(). Оба они возвращают объект StreamWriter:

    var fileName = $@"C{Path.VolumeSeparatorChar}

         {Path.DirectorySeparatorChar}Test.dat";

    ...

    FileInfo f6 = new FileInfo(fileName);

    using(StreamWriter swriter = f6.CreateText())

    {

      // Использовать объект StreamWriter...

    }

    f6.Delete();

    FileInfo f7 = new FileInfo(fileName);

    using(StreamWriter swriterAppend = f7.AppendText())

    {

      // Использовать объект StreamWriter...

    }

    f7.Delete();

    Как и можно было ожидать, тип StreamWriter предлагает способ записи данных в связанный с ним файл.

    Работа с типом File

    В типе File определено несколько статических методов для предоставления функциональности, почти идентичной той, которая доступна в типе FileInfo. Подобно FileInfо тип File поддерживает методы AppendText(), Create(), CreateText(), Open(), OpenRead(), OpenWrite() и OpenText(). Во многих случаях типы File и FileInfo могут применяться взаимозаменяемо. Обратите внимание, что методы OpenText() и OpenRead() требуют существования файла. Чтобы взглянуть на тип File в действии, упростите приведенные ранее примеры использования типа FileStream, применив в каждом из них тип File:

    var fileName = $@"C{Path.VolumeSeparatorChar}

                       {Path.DirectorySeparatorChar}Test.dat";

    ...

    // Использование File вместо FileInfo.

    using (FileStream fs8 = File.Create(fileName))

    {

      // Использовать объект FileStream...

    }

    File.Delete(fileName);

    // Создать новый файл через File.Open().

    using(FileStream fs9 =  File.Open(fileName,

      FileMode.OpenOrCreate, FileAccess.ReadWrite,

      FileShare.None))

    {

      // Использовать объект FileStream...

    }

    // Получить объект FileStream с правами только для чтения.

    using(FileStream readOnlyStream = File.OpenRead(fileName))

    {}

    File.Delete(fileName);

    // Получить объект FileStream с правами только для записи.

    using(FileStream writeOnlyStream = File.OpenWrite(fileName))

    {}

    // Получить объект StreamReader.

    using(StreamReader sreader = File.OpenText(fileName))

    {}

    File.Delete(fileName);

    // Получить несколько объектов StreamWriter.

    using(StreamWriter swriter = File.CreateText(fileName))

    {}

    File.Delete(fileName);

    using(StreamWriter swriterAppend =

      File.AppendText(fileName))

    {}

    File.Delete(fileName);

    Дополнительные члены типа File

    Тип File также поддерживает несколько членов, описанных в табл. 20.6, которые могут значительно упростить процессы чтения и записи текстовых данных.

    Приведенные в табл. 20.6 методы типа File можно использовать для реализации чтения и записи пакетов данных посредством всего нескольких строк кода. Еще лучше то, что эти методы автоматически закрывают лежащий в основе файловый дескриптор. Например, следующий проект консольного приложения (по имени SimpleFileIO) сохраняет строковые данные в новом файле на диске С: (и читает их в память) с минимальными усилиями (здесь предполагается, что было импортировано пространство имен System.IO):

    Console.WriteLine("***** Simple I/O with the File Type *****n");

    string[] myTasks = {

      "Fix bathroom sink", "Call Dave",

      "Call Mom and Dad", "Play Xbox One"};

    // Записать все данные в файл на диске С:.

    File.WriteAllLines(@"tasks.txt", myTasks);

    // Прочитать все данные и вывести на консоль.

    foreach (string task in File.ReadAllLines(@"tasks.txt"))

    {

      Console.WriteLine("TODO: {0}", task);

    }

    Console.ReadLine();

    File.Delete("tasks.txt");

    Из продемонстрированного примера можно сделать вывод: когда необходимо быстро получить файловый дескриптор, тип File позволит сэкономить на объеме кодирования. Тем не менее, преимущество предварительного создания объекта FileInfo заключается в возможности сбора сведений о файле с применением членов абстрактного базового класса FileSystemInfo.

    Абстрактный класс Stream

    Вы уже видели много способов получения объектов FileStream, StreamReader и StreamWriter, но с использованием упомянутых типов нужно еще читать данные или записывать их в файл. Чтобы понять, как это делается, необходимо освоить концепцию потока. В мире манипуляций вводом-выводом поток (stream) представляет порцию данных, протекающую между источником и приемником. Потоки предоставляют общий способ взаимодействия с последовательностью байтов независимо от того, устройство какого рода (файл, сетевое подключение либо принтер) хранит или отображает байты.

    Абстрактный класс System.IO.Stream определяет набор членов, которые обеспечивают поддержку синхронного и асинхронного взаимодействия с хранилищем (например, файлом или областью памяти).

    На заметку! Концепция потока не ограничена файловым вводом-выводом. Естественно, библиотеки .NET Core предлагают потоковый доступ к сетям, областям памяти и прочим абстракциям, связанным с потоками.

    Потомки класса Stream представляют данные в виде низкоуровневых потоков байтов; следовательно, работа непосредственно с низкоуровневыми потоками может оказаться не особенно понятной. Некоторые типы, производные от Stream, поддерживают позиционирование, которое означает процесс получения и корректировки текущей позиции в потоке. В табл. 20.7 приведено описание основных членов класса Stream, что помогает понять его функциональность.

    Работа с типом FileStream

    Класс FileStream предоставляет реализацию абстрактных членов Stream в манере, подходящей для потоковой работы с файлами. Это элементарный поток; он может записывать или читать только одиночный байт или массив байтов. Однако напрямую взаимодействовать с членами типа FileStream вам придется нечасто. Взамен вы, скорее всего, будете применять разнообразные оболочки потоков, которые облегчают работу с текстовыми данными или типами .NET Core. Тем не менее, полезно поэкспериментировать с возможностями синхронного чтения/записи

    1 ... 237 238 239 240 241 242 243 244 245 ... 407
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

    Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


    Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

    • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
    • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
    • 3. Просьба отказаться от нецензурной лексики.
    • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

    Надеемся на Ваше понимание и благоразумие. С уважением, администратор LoveRead.info.


    Установить VPN и читай слушай бесплатно

    Новые отзывы

    1. Борис Борис14 июнь 00:50 Колокола в России тем и отличались от западных что раскачиаали именно язык колокола,а не сам колокол! Авторы что-жертвы ЕГЭ? Не... Соединенные Штаты России 3 - Полина Ром
    2. Людмила Хофман Людмила Хофман10 июнь 22:13 У меня перевернулся мир после прочтения ваших книг! Так приятно и чисто на душе, ведь по сути неважно кто с кем , а только любовь... Долгая игра - Рейчел Рид
    3. Анна Анна08 июнь 11:28 Спасибо за новую историю жизни и любви на сайте,прочитала с удовольствием .... Давай поженимся - Юлия Резник
    Все комметарии
    Новинки бесплатной онлайн библиотеки