Модуль 18 Потоки и файлы Обзор модуля В


Модуль 18 Потоки и файлы

Обзор модуля В этом модуле вы изучите: Пространство имен System.IO Обработку потоков Обработку файлов Класс Directory Класс DirectoryInfo

Занятие 1 - Пространство имен “System.IO” На первом занятии, Пространство имен System.IO, вы научитесь: Объяснять необходимость файлов и потоков. Описывать пространтсво имен System.IO и его значение.

Потоки и файлы Термин “файл” обычно связан с информацией, хранящейся на диске или в памяти. Данные для длительного хранения размещаются в файлах. Поток - это текущие данные. Потоки могут быть использованы для передачи или получения информации из памяти, сети, web, строк и других источников.

Необходимость файлов и потоков Они помогают сохранить данные на длительное время после завершения программы или выключения компьютера. Содержимое может быть повторно использовано той же или другой программой. Они позволяют обрабатывать большие объемы данных в удобной форме; потоки могут использоваться для хранения и получения данных.

Пространство имен “System.IO” Язык программирования C# предоставляет пользователям изолированное пространство имен System.IO для управления файлами и потоками. Пространство имен System.IO предоставляет пользователю массу классов для файлового/потокового ввода/вывода. Оно содержит классы, которые позволяют читать и записывать файлы и потоки данных, а также классы, предоставляющие базовую поддержку файлов и каталогов. Оно предоставляет такие классы, как File и Directory, которые позволяют пользователям оперировать файлами и каталогами.

Занятие 2 – Обработка потоков На втором занятии, Обработка потоков, вы научитесь: Перечислять часто используемые классы и интерфейсы в пространстве имен System.IO. Объяснять классы BinaryReader и BinaryWriter. Описывать класс Stream и его классы-наследники. Описывать класс TextReader. Описывать класс TextWriter.

Классы и интерфейсы пространства имен “System.IO” Пространство имен System.IO содержит классы, облегчающие чтение и запись данных в потоки и файлы. Оно также содержит классы, предоставляющие доступ к каталогам.

Close()- Используется, чтобы закрыть текущий сеанс чтения и освободить поток, из которого производилось чтение данных. Read()- Используется для чтения символов из указанного потока. ReadDecimal()- Читает значение decimal из указанного потока. ReadByte()- Читает значение byte из указанного потока. ReadString()- Читает строку из указанного потока. Класс “BinaryReader” Используется для чтения двоичных данных из файла. Некоторые методы, поддерживаемые BinaryReader: Close() Read() ReadDecimal() ReadByte() ReadString()

Close() –используется для закрытия текущего потока с двоичными данными, а также закрывает текущий BinaryWriter. Flush()- он очищает все буферы для текущего сеанса записи и записывает все буферизированные данные на устройство. Write()- перегруженный метод, он записывает данные в текущий поток. BinaryWriter objBinaryWrite = new BinaryWriter(File.Create(“C:/Test.bin”)); Byte b = 45; string str1 = “Billy”; objBinaryWrite.Write(b); objBinaryWrite.Write(str1); objBinaryWrite.Close(); BinaryReader objBinaryRead = new BinaryReader(File.OpenRead(“C:/Test.bin”)); Byte b2 = objBinaryRead.ReadByte(); string str2= objBinaryRead.ReadString(); Console.WriteLine(str2); Console.WriteLine(b2); objBinaryRead.Close(); Класс “BinaryWriter” Используется для записи двоичных данных из переменных C# в заданный поток. Некоторые методы, поддерживаемые BinaryWriter: Close() Flush() Write() Пример

MemoryStream - Используется для чтения и записи данных в память вместо диска. BufferedStream - Используется для чтения и записи в буфер. FileStream - Используется для выполнения операций чтения и записи над файлами. NetworkStream - Используется для отправки и получения данных через сеть. CryptoStream - Используется для связи потока данных с каким-либо криптографическим объектом с целью шифрования данных. Класс “Stream” Один из самых важных классов в пространстве имен IO. Некоторые классы, производные от этого класса: MemoryStream BufferedStream FileStream NetworkStream CryptoStream Пример class Program { static void Main(string[] args) { MemoryStream objMemStr = new MemoryStream(); BufferedStream objBuffStr = new BufferedStream(objMemStr); objBuffStr.WriteByte((byte)100); bjBuffStr.Position=0; byte[] Arr = {1, 2, 3}; objBuffStr.Read(Arr,0,2); for(int i=0;i<3;i++) { Console.WriteLine(“The value is {0}”,Arr[i]);} Console.WriteLine(“The return value for ReadByte() is{0}”,objBuffStr. } } }

Класс “TextReader” 1-2 Базовый абстрактный класс для классов StreamReader и StringReader. Он используется для чтения последовательных серий символов. Разница между классами Stream и StringReader в том, что класс Stream читает и записывает байты, а класс StringReader читает символы из потока байт.

Console.WriteLine(“Enter the file name: “); string FileName = Console.ReadLine(); if (!File.Exists(FileName)) { Console.WriteLine(“{0} does not exist!”, FileName); return; } StreamReader objStreamRead = File.OpenText(FileName); String input; while ((input = objStreamRead.ReadLine()) != null) { Console.WriteLine(input); } Console.WriteLine(“The end of the stream is reached.”); objStreamRead.Close(); Console.Write(“Enter a string: “); String str = Console.ReadLine(); char[] b = new char[str.Length]; StringReader sr = new StringReader(str); sr.Read(b, 0, str.Length); Console.WriteLine(b); Класс “TextReader” 2-2 В таблице показаны некоторые методы класса TextReader: Пример

Console.Write(“Enter the file name: “); string Filename = Console.ReadLine(); if (!File.Exists(Filename)) { Console.WriteLine(“{0} does not exist!”,Filename); return; } StreamWriter objStreamWrite = File.AppendText(Filename); Console.Write(“Enter a string to be written to the file: ”); String Str = Console.ReadLine(); objStreamWrite.WriteLine(Str); objStreamWrite.Close(); Класс “TextWriter” Базовый абстрактный класс для классов, которые могут быть использованы для записи последовательностей символов. StreamWriter и StringWriter - это два класса-наследника класса TextWriter. StreamWriter записывает символы в поток в указанной кодировке. В таблице показаны некоторые методы класса TextWriter: Пример

Занятие 3 – Обработка файлов На третьем занятии, Обработка файлов, вы научитесь: Объяснять класс File, его методы и свойства. Формулировать процедуры для создания файлов, используя классы в пространстве имен System.IO. Формулировать процедуры для копирования и перемещения файлов, используя классы в пространстве имен System.IO. Формулировать процедуры для удаления файлов, используя классы в пространстве имен System.IO. Объяснять класс FileInfo.

Класс “File” Представлен в пространстве имен System.IO. Предоставляет статические методы для создания, копирования, удаления, перемещения и открытия файлов. Содержит набор методов, предоставляющих доступ к информации о файле.

Методы класса “File” Статические методы класса File выполняют проверку правил безопасности при каждом вызове. В таблице перечислены наиболее важные методы класса File:

Создание файла Метод Create() класса File используется для создания нового файла. Метод Create() в качестве параметра принимает путь, по которому должен быть создан файл, и имя создаваемого файла. Объект FileStream может быть использован для записи и чтения из файла. Пример string filename = @”C:\Student.txt”; try { // Создает файл. FileStream fs = File.Create(filename); //Подготовка к записи текста в файл Byte[] info = new UTF8Encoding(true).GetBytes(“This file was programmatically created using C#”); //Записывает данные fs.Write(info, 0, info.Length); //очищает и закрывает FileStream fs.Flush(); fs.Close(); Console.WriteLine(filename + “ has been created.”); }

Копирование файла Метод Copy() класса File может быть использован для копирования файла в новое место. Метод Copy() принимает два параметра: исходный файл для копирования и путь, по которому будет скопирован файл. Пример string filename = @”c:\Student.txt”; string filename2 = @”d:\NewStudents.txt”; try { // Копирует файл. File.Copy(filename, filename2); Console.WriteLine(“{0} has been copied to {1}”, filename, filename2); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine(“Error Occured : “ + ex.Message); Console.ReadLine(); }

Перемещение файла Метод Move() класса File используется для перемещения файла. Этот метод похож на метод Copy(). Пример string FileName = @”d:\StudentDetails.txt”; string FileNameNew = @”c:\NewStudentDetails.txt”; try { // Копирует файл File.Move(FileName, FileNameNew); Console.WriteLine(“{0} has been moved to [1}”, FileName, FileNameNew); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine(“Error Occured : “ + ex.Message); Console.ReadLine(); }

Удаление файла Метод Delete() класса File используется для удаления файла. Метод Delete() принимает один параметр - путь к удаляемому файлу. Пример string filename = @”c:\StudentDetails.txt”; try { File.Delete(filename); Console.WriteLine(“{0} has been Deleted!”,filename); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine(“Error Occured : “ + ex.Message); Console.ReadLine(); }

Класс “FileInfo” Он используется для: Создания файлов Копирования файлов Перемещения файлов Удаления файлов Дополнения файлов В таблице перечислены часто используемые свойства и методы класса FileInfo:

Методы класса “FileInfo” Библиотека базового класса .NET Framework содержит другой класс с именем FileInfo. Используются для выполнения операций, аналогичных классу File. Предоставляет методы для создания, копирования, удаления, перемещения и открытия файлов. Используется для создания объектов FileStream. Пример string path = @”c:\NewFile.txt”; try { //Создает объект FileInfo FileInfo objFileInfo = new FileInfo(@”C:\test.txt”); //Создает файл FileStream objFileStream = objFileInfo.Create(); //Подготовка к записи текста в файл Byte[] info = new UTF8Encoding(true).GetBytes(“This file was programmatically created using C#”); //Записывает данные objFileStream.Write(info, 0, info.Length); //очищает и закрывает FileStream objFileStream.Flush(); objFileStream.Close(); //Копирует файл objFileInfo.CopyTo(@”C:\My Documents”, true); Console.WriteLine(@”{0} Copied to C:\MyDocuments”, path); //Выводит время создания файла Console.WriteLine(@”{0} was created on {1}”, path, objFileInfo. CreationTime.ToString()); //Выводит время последнего доступа к файлу Console.WriteLine(@”{0} was last accessed on {1}”, path, objFileInfo.LastAccessTime.ToString()); //Выводит время последней записи в файл Console.WriteLine(@”{0} was last written to on {1}”, path, objFileInfo.LastWriteTime.ToString()); //Удаляет файл objFileInfo.Delete(); }

Занятие 4 – Класс “Directory” На четвертом занятии, Класс Directory, вы научитесь: Описывать класс Directory. Описывать процедуру создания каталога, используя класс Directory. Описывать процедуру переименования или перемещения каталога, используя класс Directory. Описывать, как удалить каталог, используя методы класса Directory.

Класс “Directory” Помогает в структурировании и организации файлов на диске. Содержит статические методы для создания, перемещения и перечисления каталогов и подкаталогов. В таблице перечислены наиболее часто используемые методы класса Directory:

Создание класса “Directory” Метод CreateDirectory() класса Directory используется для создания каталога. Он принимает один параметр. Он возвращает объект DirectoryInfo, который может быть использован для работы с только что созданным каталогом. Пример string path = @”c:\Employee”; try { //Создает каталог DirectoryInfo objDirectoryInfo =Directory.CreateDirectory(path); //Выводит дату и время создания каталога Console.WriteLine(path + “ created on “ + objDirectoryInfo. CreationTime.ToString()); //Вызывает метод для создания нового файла string filenames = @”C:\Employee\EmployeeDetails.txt”; FileStream objFileStream = File.Create(filenames); //Получает файлы каталога string[] files = Directory.GetFiles(path); //Выводит список файлов каталога Console.WriteLine(“\nDisplaying files in “ +path); foreach (string filename in files) { Console.WriteLine(filename); } }

Переименование каталога Метод Move() класса Directory используется для перемещения или переименования каталога. Пример string SourcePath = @”c:\Employee”; string DestinationPath = @”c:\NewEmployee”; try { //Перемещает каталог Directory.Move(SourcePath, DestinationPath); Console.WriteLine(SourcePath + “ has been moved to ” + DestinationPath); Console.ReadLine(); }

Удаление каталога Метод Delete() класса Directory используется для удаления каталога. Пример string path = @”c:\NewEmployee”; try { //Удаляет каталог Directory.Delete(path, true); Console.WriteLine(path + “ has been deleted.”); Console.ReadLine(); } catch(Exception ex) { Console.WriteLine(“Error Occured:“ + ex.Message); Console.ReadLine(); }

Занятие 5 – Класс “DirectoryInfo” На последнем занятии, Класс DirectoryInfo, вы научитесь: Резюмировать возможности класса DirectoryInfo. Перечислять и описывать методы и свойства класса DirectoryInfo

Класс “DirectoryInfo” Все методы являются статическими и могут быть вызваны без создания экземпляра класса. Содержит только экземпляры методов. Статические методы класса Directory выполняют проверку безопасности для каждого метода.

try { //Устанавливает пути к источнику и назначению string path = @”C:\Student”; string destPath = @”C:\NewStudent”; //Создает объект DirectoryInfo DirectoryInfo di = new DirectoryInfo(path); //Создает каталог di.Create(); Console.WriteLine(“{0} created on {1}”, path,di.CreationTime. ToString()); //Перемещает каталог di.MoveTo(destPath); Console.WriteLine(“{0} moved to {1}”, path, destPath); //Удаляет каталог di.Delete(); Console.WriteLine(“{0} has been deleted.”, destPath); } Методы и свойства Каталог может быть создан, перемещен и удален с использованием класса DirectoryInfo. В таблице перечислены часто используемые свойства и методы класса DirectoryInfo: Пример

Заключение 1-3 Пространство имен System.IO Термин «файл» связан с любой информацией, которая хранится на жестких дисках или в памяти. Потоки данных могут использоваться для отправки или получения информации из памяти, сети, web, строк и других мест. Пространство имен System.IO предоставляет классы для файлов/потоков и ввода/вывода. Обработка потоков Класс BinaryReader используется для чтения двоичных данных из файла. Класс BinaryWriter используется для записи двоичных данных в файл. TextReader и TextWriter - это базовые абстрактные классы для классов, которые могут использоваться для чтения или записи последовательностей символов.

Заключение 2-3 Обработка файлов Класс File предоставляет статические методы для создания, копирования, удаления, перемещения и открытия файлов. Класс FileInfo используется для таких операций, как копирование, перемещение, переименование, создание, удаление и добавления файлов. Класс Directory Класс Directory содержит статические методы для создания, перемещения и перечисления каталогов и подкаталогов. Метод CreateDirectory() используется для создания каталогов. Метод Move()класса Directory используется для перемещения или переименования каталога.

Заключение 3-3 Класс DirectoryInfo Класс DirectoryInfo содержит только экземпляры методов Каталог может быть создан, перемещен и удален с использованием класса DirectoryInfo.

2328-expc_module_18_ru_1.ppt
- Количество слайдов: 34