Доступ к файловой системе в С#

Автор: Topol Пятница, Июнь 8th, 2012 Нет комментариев

Рубрика: Программирование

Доступ из программного кода к файловой системе требуется, когда возникает необходимость обратиться к определенным папкам и файлам. В C# (си шарп) это осуществляется с помощью так называемых потоков (stream). Поток представляет собой последовательно считываемые байты. Типы, позволяющие считывать и записывать потоки данных, содержатся в пространстве имен System.IO, поэтому в первую очередь нужно подключить соответствующую библиотеку:
using System.IO;
Допустим, нам нужно загрузить в текстовое окно содержимое файла, хранящегося на жестком диске. Для программы этот файл представляет собой поток байтов. Класс, который понадобится для считывания данных, называется StreamReader. С помощью него можно считывать символы из потока байтов. Для этого класса определен метод ReadToEnd(), который считывает весь поток до конца.
Рассмотрим пример. Будем загружать содержимое текстового файла с именем text.txt в текстовое поле txtBox1:
StreamReader strm = new StreamReader(«text.txt»);
txtBox1.Text = strm.ReadToEnd();
strm.Close();

Проанализируем код. Вначале был создан объект класса StreamReader с именем strm. Этот объект составляет основу работы, к нему применяются необходимые методы. В качестве параметра объекта указывается имя загружаемого файла с расширением. Наш файл хранится в паке с программой, поэтому мы пишем относительную, а не полную абсолютную ссылку. Поток байтов записывается в текстовое поле с помощью свойства Text. Записав последний байт, закрываем поток методом Close().
Теперь научимся обратной операции: будем записывать данные в файл на диске. Для этого используется класс StreamWriter. Также нам потребуется класс DirectoryInfo, из которого мы получим методы для работы в каталогах и подкаталогах. Приведем пример консольного приложения, в результате которого вы увидите список папок, находящихся на вашем жестком диске. Этот список окажется в файле papki.txt в папке bin/debug созданного проекта:
DirectoryInfo[] cDirs = new DirectoryInfo(@»c:»).GetDirectories();
using (StreamWriter stw = new StreamWriter(«papki.txt»))
{
foreach (DirectoryInfo dr in cDirs)
{
stw.WriteLine(dr.Name); //записываем названия папок
}
}

С помощью класса DirectoryInfo мы указали программе директорию, с которой собираемся работать – в нашем случае это корень диска С. Затем создали объект stw типа StreamWriter, и в качестве аргумента назначили имя нового текстового файла – papki.txt. Этот файл создаете не вы, программа сделает это сама. С помощью цикла foreach перебираем все названия папок и записываем их в текстовый файл, вызывая для объекта метод WriteLine(). За название папок отвечает свойство Name.

Источник: cisharp.com

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты