Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bestuzhev.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆
  1. Файловый ввод-вывод

Пространство имен System.IO:

  • DirectoryInfo

  • FileInfo

  • Directory

  • File

DirectoryInfo:

// Привязаться к несуществующему каталогу, затем создать его.

DirectoryInfo dir = new DirectoryInfo (@"C:\MyCode\Testing");

dir.Create();

Directory:

// Перечислить все дисковые устройства данного компьютера.

string [] drives = Directory.GetLogicalDrives();

// Удалить то, что было ранее создано.

Directory.Delete(@"C:\MyFolder");

File:

//Получить объект FileStream через File.Create () .

using(FileStream fs = File.Create(@"C:\Test.dat"))

{ …

}

// Получить объект FileStream через File.Open().

using(FileStream fs2 = File.Open(@MC:\Test2.dat",

FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None))

{ …

}

FileInfo:

static void Main(string[] args)

{

// Создать новый файл на диске С:

FileInfo f = new FileInfo(@"C:\Test.dat");

FileStream fs = f.Create();

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

// Закрыть файловый поток.

fs.Close();

}

  1. Класс Stream:

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

Предопределенные классы StreamReader (возможность читать символьный поток) и StreamWriter (возможность записывать текстовые данные в символьный поток)

Запись в текстовый файл:

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

using (StreamWriter writer = File.CreateText ("reminders.txt"))

{

writer.WriteLine("Don't forget Mother's Day this year...");

writer.WriteLine("Don't forget Father's Day this year...");

writer.WriteLine("Don't forget these numbers:");

for(int i = 0; i < 10; i++)

writer.Write (i + " ");

// Вставить новую строку.

writer.Write(writer.NewLine);

}

Чтение из текстового файла:

// Прочитать данные из файла.

using(StreamReader sr = File.OpenText("reminders.txt"))

{

string input = null;

while ((input = sr.ReadLine()) != null)

{

Console.WriteLine(input);

}

}

  1. Работа с потоками

Класс System.Threading.Thread:

Программное создание вторичных потоков:

  1. Создать метод, который будет точкой входа для нового потока.

  2. Создать новый делегат ParametrizedThreadStart (или ThreadStart), передав конструктору адрес метода, определенного на шаге 1.

  3. Создать объект Thread, передав в качестве аргумента конструктора ParametrizedThreadStart/ThreadStart.

  4. Установить начальные характеристики потока (имя, приоритет и т.п.).

  5. Вызвать метод Thread.Start(). Это запустит поток на методе, который указан делегатом, созданным на шаге 2, как только это будет возможно.

Потоки переднего плана и фоновые потоки:

  • Потоки переднего плана (foreground threads) обеспечивают предохранение текущего приложения от завершения. Среда CLR не остановит приложение (что означает выгрузку текущего домена приложения) до тех пор, пока не будут завершены все фоновые потоки.

  • Фоновые потоки (background threads), иногда называемые потоками-демонами, воспринимаются средой CLR как расширяемые пути выполнения, которые в любой момент времени могут игнорироваться (даже если они в текущее время заняты выполнением некоторой части работы). Таким образом, если все потоки переднего плана прекращаются, то все фоновые потоки автоматически уничтожаются при выгрузке домена приложения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]