Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp_Prog_Guide.doc
Скачиваний:
16
Добавлен:
16.11.2019
Размер:
6.22 Mб
Скачать

Общие классы потокового ввода и вывода

Класс BufferedStream создает буферизацию для другого потока, такого как NetworkStream. (В классе FileStream буферизация является внутренним свойством, а класс MemoryStream не нуждается в буферизации.) Экземпляр класса BufferedStream может быть создан для некоторых типов потоков в целях повышения производительности ввода и вывода. Буфер — это блок байтов памяти, который используется для кэширования данных, тем самым уменьшая количество обращений к операционной системе.

Класс CryptoStream связывает потоки данных с криптографическими преобразованиями. Несмотря на то, что CryptoStream является производным от Stream, он не является частью пространства имен System.IO, а находится в пространстве имен System.Security.Cryptography.

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

Класс NetworkStream представляет поток через сетевое подключение. Несмотря на то, что NetworkStream является производным от Stream, он не является частью пространства имен System.IO, а находится в пространстве имен System.Net.Sockets.

Ввод-вывод и безопасность

При использовании классов пространства имен System.IO для предоставления доступа должны быть выполнены требования безопасности операционной системы, такие как списки управления доступом. Это требование дополняет остальные требования FileIOPermission.

Примечание.

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

Внимание!

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

Внимание!

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

How to: Create a Directory Listing

The following code example shows how to use the I/O classes to create a listing of all files with the extension ".exe" in a directory.

Example

using System;

using System.IO;

class DirectoryLister

{

public static void Main(String[] args)

{

string path = ".";

if (args.Length > 0)

{

if (File.Exists(args[0]))

{

path = args[0];

}

else

{

Console.WriteLine("{0} not found; using current directory:",

args[0]);

}

}

DirectoryInfo dir = new DirectoryInfo(path);

foreach (FileInfo f in dir.GetFiles("*.exe"))

{

String name = f. Name;

long size = f.Length;

DateTime creationTime = f.CreationTime;

Console.WriteLine("{0,-12:N0} {1,-20:g} {2}", size,

creationTime, name);

}

Console.ReadKey();

}

}