Доступ из программного кода к файловой системе требуется, когда возникает необходимость обратиться к определенным папкам и файлам. В C# (си шарп) это осуществляется с помощью так называемых потоков (stream). Поток представляет собой последовательно считываемые байты.
Типы, позволяющие считывать и записывать потоки данных, содержатся в пространстве имен System.IO, поэтому в первую очередь нужно подключить соответствующую библиотеку:
using System.IO;
Допустим, нам нужно загрузить в текстовое окно содержимое файла, хранящегося на жестком диске. Для программы этот файл представляет собой поток байтов. Класс, который понадобится для считывания данных, называется StreamReader. С помощью него можно считывать символы из потока байтов. Для этого класса определен метод ReadToEnd(), который считывает весь поток до конца. Для хорошей производительности покупайте ноутбуки DELL Alienware M14x, которые можно купить по оптимальной и доступной цене.
Рассмотрим пример. Будем загружать содержимое текстового файла с именем 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.