Потоки (C#, Лекция 6)

Содержание

Слайд 2

Потоки Поток - это абстракция последовательности байтов, например файла, устройства ввода-вывода,

Потоки

Поток - это абстракция последовательности байтов, например
файла,
устройства ввода-вывода,
межпроцессного

канала связи
или сокета TCP/IP.
Слайд 3

Операции потока Потоки включают три основные операции: Чтение из потока. Чтение

Операции потока

Потоки включают три основные операции:
Чтение из потока. Чтение – это

перенос информации из потока в структуру данных, такую как массив байтов.
Запись в поток. Запись – это перенос данных из структуры данных в поток.
Слайд 4

Операции потока Потоки могут поддерживать поиск. Поиск ссылается на запрос и

Операции потока

Потоки могут поддерживать поиск. Поиск ссылается на запрос и изменение

текущей позиции внутри потока. Поиск возможностей зависит от вида резервного хранилища потока.
Слайд 5

Класс Stream Stream класс и его производные классы предоставляют универсальное представление

Класс Stream

 Stream класс и его производные классы предоставляют универсальное представление различных типов

ввода и вывода, а также изолируют программиста от специфических особенностей операционной системы и базовых устройств.
Stream является абстрактным базовым классом всех потоков. 
Слайд 6

Класс Stream Можно запрашивать возможности потока с помощью свойств Stream класса:

Класс Stream

Можно запрашивать возможности потока с помощью свойств Stream класса: CanRead,

CanWrite, и CanSeek.
В зависимости от базового источника данных или репозитория потоки могут поддерживать только некоторые из этих возможностей.
Слайд 7

Класс Stream Методы чтения и записи данных в различных форматах: Read

Класс Stream

Методы чтения и записи данных в различных форматах: Read и

Write.
Для потоков, поддерживающих поиск, используйются методы Seek и SetLength.
Свойства Position и Length, позволяют запрашивать и изменять текущее положение и длину потока.
Слайд 8

Классы для работы с файлами Класс FileStream Класс BufferedStream Классы TextReader

Классы для работы с файлами

Класс FileStream
Класс BufferedStream
Классы TextReader и TextWriter
Классы File

и FileInfo
Классы Directory и DirectoryInfo
Слайд 9

FileStream Класс, поддерживающий синхронные и асинхронные операции чтения и записи. FileStream(String,

FileStream

Класс, поддерживающий синхронные и асинхронные операции чтения и записи.
FileStream(String, FileMode) – инициализирует

новый экземпляр класса FileStream указанным путем и режимом создания.
FileStream(String, FileMode, FileAccess) – Инициализирует новый экземпляр класса FileStream заданным путем, режимом создания и разрешением на чтение и запись.
Слайд 10

FIleMode Перечисление, описывающее, каким образом операционная система должна открывать файл.

FIleMode

Перечисление, описывающее, каким образом операционная система должна открывать файл.

Слайд 11

FIleMode

FIleMode

Слайд 12

FileAccess Перечисление, определяющее константы чтения, записи или чтения и записи файла.

FileAccess

Перечисление, определяющее константы чтения, записи или чтения и записи файла.

Слайд 13

Чтение Read(byte[] array, int offset, int count) – выполняет чтение блока

Чтение

Read(byte[] array, int offset, int count) – выполняет чтение блока байтов

из потока и запись данных в заданный буфер.
array – массив байт, в который производится считывание
offset – смещение в байтах в массиве array, в который будут помещены считанные байты.
count – максимальное число байтов, предназначенных для чтения.
Слайд 14

Пример чтения using (FileStream fs = new FileStream(path, FileMode.Open)) { byte[]

Пример чтения

using (FileStream fs = new FileStream(path,
FileMode.Open))
{
byte[] b = new

byte[1024];
UTF8Encoding temp = new
UTF8Encoding(true);
while (fs.Read(b, 0, b.Length) > 0)
{
Console.WriteLine(temp.GetString(b));
}
}
Слайд 15

Оператор using Предоставляет удобный синтаксис, обеспечивающий правильное использование объектов IDisposable. Оператор

Оператор using

Предоставляет удобный синтаксис, обеспечивающий правильное использование объектов IDisposable.
Оператор using соответствующим

образом вызывает метод Dispose в объекте.
В рамках блока using объект доступен только для чтения и не может быть изменен или переназначен.
Слайд 16

Чтения байта ReadByte() – считывает байт из файла и перемещает положение

Чтения байта

ReadByte() – считывает байт из файла и перемещает положение чтения

на один байт.
Байт приводится к типу Int32 или -1, если достигнут конец потока.
Слайд 17

Запись Write(byte[] array, int offset, int count) – записывает блок байтов

Запись

Write(byte[] array, int offset, int count) – записывает блок байтов в файловый

поток.
array – буфер, содержащий данные для записи в поток
offset – смещение байтов (начиная с нуля) в объекте array, с которого начинается копирование байтов в поток
count – максимальное число байтов для записи
Слайд 18

Пример записи using (FileStream fs = File.Create(path)) { info = new

Пример записи

using (FileStream fs = File.Create(path))
{
info = new
UTF8Encoding(true).GetBytes("This is some text");
fs.Write(info,

0, info.Length);
}
Слайд 19

Запись байта WriteByte(byte value) – запись байта в текущую позицию в

Запись байта

WriteByte(byte value) – запись байта в текущую позицию в потоке

файла.
value – байт, который необходимо записать в поток.
Слайд 20

BufferedStream Добавляет буферизацию для выполнения операций на другой поток чтения и

BufferedStream

Добавляет буферизацию для выполнения операций на другой поток чтения и записи.
BufferedStream(Stream)

инициализирует новый экземпляр BufferedStream класса размер буфера по умолчанию 4096 байт.
BufferedStream(Stream, Int32)
Слайд 21

Пример чтения using (FileStream fs = new FileStream(path, FileMode.Open)) { using

Пример чтения

using (FileStream fs = new FileStream(path,
FileMode.Open))
{
using (BufferedStream bs =

new BufferedStream(fs))
{
byte[] b = new byte[1024];
UTF8Encoding temp = new
UTF8Encoding(true);
while (bs.Read(b, 0, b.Length) > 0)
{
Console.WriteLine(temp.GetString(b));
}
}
}
Слайд 22

StreamReader TextReader – абстрактный класс, представляющий средство чтения, позволяющее считывать последовательные

StreamReader

TextReader – абстрактный класс, представляющий средство чтения, позволяющее считывать последовательные наборы

символов.
StreamReader – класс, наследник от TextReader, считывает символы из потока байтов в определенной кодировке.
Слайд 23

Конструкторы StreamReader(String) – инициализирует новый экземпляр класса StreamReader для заданного потока.

Конструкторы

StreamReader(String) – инициализирует новый экземпляр класса StreamReader для заданного потока.
StreamReader(String, Encoding) – инициализирует

новый экземпляр класса StreamReader для заданного потока, используя указанную кодировку символов.
Слайд 24

Encoding Класс Encoding представляет кодировку символов.

Encoding

Класс Encoding представляет кодировку символов.

Слайд 25

Encoding

Encoding

Слайд 26

Пример using(StreamReader sr = new StreamReader( "D:\test.txt", Encoding.ASCII)) { //код работы с файлом }

Пример

using(StreamReader sr = new StreamReader(
"D:\test.txt", Encoding.ASCII))
{
//код работы с файлом
}

Слайд 27

Чтение string ReadLine() – выполняет чтение строки символов из текущего потока

Чтение

string ReadLine() – выполняет чтение строки символов из текущего потока и

возвращает данные в виде строки.
Возвращаемое значение – следующая строка из входного потока или значение null, если достигнут конец входного потока.
Слайд 28

Пример чтения using (StreamReader sr = new StreamReader( "TestFile.txt")) { string

Пример чтения

using (StreamReader sr = new StreamReader(
"TestFile.txt"))
{
string line;
while ((line

= sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
Слайд 29

StreamWriter TextWriter – абстрактный класс, представляющий модуль записи, который может записывать

StreamWriter

TextWriter – абстрактный класс, представляющий модуль записи, который может записывать последовательные

наборы символов.
StreamWriter – класс, реализующий TextWriter для записи символов в поток в определенной кодировке.
Слайд 30

Конструкторы StreamWriter(String) – инициализирует новый экземпляр класса StreamWriter для заданного потока.

Конструкторы

StreamWriter(String) – инициализирует новый экземпляр класса StreamWriter для заданного потока.
StreamWriter(String, Encoding) – инициализирует

новый экземпляр класса StreamWriter для заданного потока, используя указанную кодировку символов.
Слайд 31

Запись в файл WriteLine(string value) – записывает в текстовую строку или

Запись в файл

WriteLine(string value) – записывает в текстовую строку или поток

строку, за которой следует признак конца строки.
value – строка для записи. Если value имеет значение null, записывается только признак конца строки.
Слайд 32

Пример записи using (StreamWriter sw = new StreamWriter( "CDriveDirs.txt")) { foreach

Пример записи

using (StreamWriter sw = new StreamWriter(
"CDriveDirs.txt"))
{
foreach (DirectoryInfo dir in

cDirs)
{
sw.WriteLine(dir.Name);
}
}
Слайд 33

Класс File Предоставляет статические методы для создания, копирования, удаления, перемещения и

Класс File

Предоставляет статические методы для создания, копирования, удаления, перемещения и открытия

одного файла, а также помогает при создании объектов FileStream.
Слайд 34

Методы Copy(string sourceFileName, string destFileName) Копирует существующий файл в новый файл.

Методы

Copy(string sourceFileName, string
destFileName)
Копирует существующий файл в новый файл. Перезапись файла с

тем же именем не разрешена.
sourceFileName копируемый файл.
destFileName имя конечного файла. Это не может быть имя каталога или имя существующего файла.
Слайд 35

Методы FileStream Create(string path) Создает или перезаписывает файл по указанному пути.

Методы

FileStream Create(string path)
Создает или перезаписывает файл по указанному пути.
path – путь

и имя создаваемого файла.
FileStream fs = File.Create("D:\test.txt");
Слайд 36

Методы Delete(string path) Удаляет указанный файл. path – имя файла, предназначенного для удаления.

Методы

Delete(string path)
Удаляет указанный файл.
path – имя файла, предназначенного для удаления.

Слайд 37

Методы bool Exists(string path) Определяет, существует ли заданный файл. path –

Методы

bool Exists(string path)
Определяет, существует ли заданный файл.
path – проверяемый файл.
if (File.Exists("D:\test.txt"))

{ … }
Слайд 38

Методы FileStream Open(string path, FileMode mode) Открывает объект FileStream по указанному

Методы

FileStream Open(string path, FileMode
mode)
Открывает объект FileStream по указанному пути с

доступом для чтения и записи.
path – открываемый файл.
mode – значение FileMode.
Слайд 39

Методы Move(string sourceFileName, string destFileName) Перемещает заданный файл в новое местоположение

Методы

Move(string sourceFileName, string
destFileName)
Перемещает заданный файл в новое местоположение и разрешает переименование

файла.
sourceFileName – имя перемещаемого файла.
destFileName – новый путь к файлу и его имя.
Слайд 40

Методы Replace(string sourceFileName, string destinationFileName, string destinationBackupFileName) Заменяет содержимое заданного файла

Методы

Replace(string sourceFileName, string destinationFileName, string destinationBackupFileName)
Заменяет содержимое заданного файла на содержимое

другого файла, удаляя исходный файл и создавая резервную копию замененного файла.
Слайд 41

FileInfo Предоставляет свойства и методы экземпляра для создания, копирования, удаления, перемещения

FileInfo

Предоставляет свойства и методы экземпляра для создания, копирования, удаления, перемещения и

открытия файлов, а также позволяет создавать объекты FileStream.
Этот класс не наследуется.
FileInfo fi = new FileInfo(string fileName);
Слайд 42

Свойства

Свойства

Слайд 43

Методы FileInfo CopyTo( string destFileName ) StreamWriter CreateText() void Delete() void

Методы

FileInfo CopyTo( string destFileName )
StreamWriter CreateText()
void Delete()
void Encrypt()
void Decrypt()
void MoveTo( string

destFileName )
FileStream Open( FileMode mode )
Слайд 44

Directory Предоставляет статические методы для создания, перемещения и перечисления в каталогах

Directory

Предоставляет статические методы для создания, перемещения и перечисления в каталогах и

вложенных каталогах. 
Этот класс не наследуется.
Слайд 45

Методы DirectoryInfo CreateDirectory(string path) Создает все каталоги и подкаталоги по указанному

Методы

DirectoryInfo CreateDirectory(string path)
Создает все каталоги и подкаталоги по указанному пути, если

они еще не существуют.
Слайд 46

Методы Delete(string path) Удаляет пустой каталог по заданному пути.

Методы

Delete(string path)
Удаляет пустой каталог по заданному пути.

Слайд 47

Методы bool Exists( string path ) Определяет, указывает ли заданный путь

Методы

bool Exists( string path )
Определяет, указывает ли заданный путь на существующий

каталог на диске.
if(Directory.Exists(path)) {…}
Слайд 48

Методы string GetCurrentDirectory() Получает текущий рабочий каталог приложения. string path = Directory.GetCurrentDirectory();

Методы

string GetCurrentDirectory()
Получает текущий рабочий каталог приложения.
string path = Directory.GetCurrentDirectory();

Слайд 49

Методы string[] GetDirectories( string path ) Возвращает имена подкаталогов (включая пути) в указанном каталоге.

Методы

string[] GetDirectories( string path )
Возвращает имена подкаталогов (включая пути) в указанном

каталоге.
Слайд 50

Методы string[] GetFiles( string path ) Возвращает имена файлов (с указанием

Методы

string[] GetFiles( string path )
Возвращает имена файлов (с указанием пути к

ним) в указанном каталоге.
Слайд 51

Методы string[] GetFileSystemEntries( string path ) Возвращает имена всех файлов и подкаталогов по указанному пути.

Методы

string[] GetFileSystemEntries( string path )
Возвращает имена всех файлов и подкаталогов по

указанному пути.
Слайд 52

Методы string[] GetLogicalDrives() Извлекает имена логических устройств данного компьютера в формате " :\".

Методы

string[] GetLogicalDrives()
Извлекает имена логических устройств данного компьютера в формате "<имя устройства>:\".

Слайд 53

Методы DirectoryInfo GetParent( string path ) Извлекает родительский каталог, на который указывает абсолютный или относительный путь.

Методы

DirectoryInfo GetParent( string path )
Извлекает родительский каталог, на который указывает абсолютный

или относительный путь.
Слайд 54

Методы Move( string sourceDirName, string destDirName ) Перемещает файл или каталог

Методы

Move( string sourceDirName, string
destDirName )
Перемещает файл или каталог со всем

его содержимым в новое местоположение.
Слайд 55

DirectoryInfo Предоставляет методы экземпляра класса для создания, перемещения и перечисления в

DirectoryInfo

Предоставляет методы экземпляра класса для создания, перемещения и перечисления в каталогах

и подкаталогах. 
Этот класс не наследуется.
DirectoryInfo di = new DirectoryInfo(
@"c:\MyDir");
Слайд 56

Свойства

Свойства

Слайд 57

Path Выполняет операции для экземпляров класса String, содержащих сведения о пути

Path

Выполняет операции для экземпляров класса String, содержащих сведения о пути к

файлу или каталогу.
Эти операции выполняются межплатформенным способом.
Слайд 58

Поля readonly char PathSeparator Разделитель, задаваемый платформой, который используется в переменных

Поля

readonly char PathSeparator
Разделитель, задаваемый платформой, который используется в переменных среды для

разделения строк пути.
readonly char VolumeSeparatorChar
Предоставляет разделитель томов, задаваемый платформой.
Слайд 59

Методы string Combine(string[] paths ) Объединяет массив строк в путь. Пустые

Методы

string Combine(string[] paths )
Объединяет массив строк в путь.
Пустые строки исключаются из

объединенного контура.
Параметры не анализируются, если они имеют пробелы.
Слайд 60

Методы string GetDirectoryName( string path ) Возвращает для указанной строки пути сведения о каталоге.

Методы

string GetDirectoryName( string path )
Возвращает для указанной строки пути сведения о

каталоге.
Слайд 61

Методы string GetFileName( string path ) Возвращает имя файла и расширение указанной строки пути.

Методы

string GetFileName( string path )
Возвращает имя файла и расширение указанной строки

пути.
Слайд 62

Методы string GetFullPath( string path ) Возвращает для указанной строки пути абсолютный путь.

Методы

string GetFullPath( string path )
Возвращает для указанной строки пути абсолютный путь.

Слайд 63

Методы string GetTempPath() Возвращает путь к временной папке текущего пользователя.

Методы

string GetTempPath()
Возвращает путь к временной папке текущего пользователя.

Слайд 64

Методы Этот метод проверяет существование переменных среды в следующем порядке и

Методы

Этот метод проверяет существование переменных среды в следующем порядке и использует

первый найденный путь:
Путь, указанный в переменной среды TMP.
Путь, указанный в переменной среды TEMP.
Путь, указанный в переменной среды USERPROFILE.
Каталог Windows.